1. 程式人生 > >lua web快速開發指南(4)

lua web快速開發指南(4)

httpd庫是基於HTTP 1.1協議實現而來, 內建了高效能的http協議解析器與urldecode解析庫.

httpd庫預設情況下就能工作的很好, 但是在一些需求較為極端的場景還是需要微調一下引數.

httpd常用的內建方法介紹

1. httpd:timeout(number)

設定每個連線到最大空閒(idle)連線等待時間, 超過這個數值httpd將主動斷開連線. (預設值為:30秒)

2. httpd:max_path_size(number)

設定Path的最大長度, 超過這個值httpd將會返回414. (預設值為: 1024)

3. httpd:max_header_size(number)

設定Header最大長度, 超過這個值httpd將會返回431. (預設值為: 65535)

4. httpd:max_body_size(number)

設定Body的最大長度, 超過這個值將會返回413. (預設為 1024 * 1024)

5. httpd:before(function)

before方法決定API與USE路由回撥在觸發之前的行為, 預設情況下允許所有路由通過.

before方法一般用來設定與修改使用者驗證路由行為(例如頭部驗證), 這提供了開發者基於before函式設計中介軟體的機會.

當開發者設定了function後(即是是一個空函式), 需要利用http庫來決定行為.

6. httpd:group(type, prefix, handles)

group方法提供了一種批量註冊路由的方式, 為一組同一組路由提供簡單便方便在註冊方法.

第一個引數type為需要批量註冊的路由型別; 初始化httpd物件後, 使用app.USEapp.API進行傳值;

第二個引數prefix為string型別的頭部; 例如:/api/admin;

第三個引數為一組路由處理函式或處理類陣列; 型別為: {route = '/login', class = class};

注意: 此方法僅支援批量註冊API與USE路由, 不可同時註冊不同型別路由;

7. httpd:static(folder, ttl)

listen方法用於告訴httpd物件監聽指定埠.

第一個引數ip暫未被httpd使用(但是必須設定), 預設監聽所有網絡卡的'0.0.0.0'地址與指定的埠號;

backlog為使用者最大連線等待佇列, 合理的設定能減少連線被重置的情況(預設值為128).

8. httpd:run()

在httpd庫所有引數與路由設定完畢之後, 呼叫run方法開啟監聽模式.

httpd的請求日誌

日誌格式為: [年/月/日 時:分:秒] - [ip] - [x-real-ip] - [path] - [method] - [http code] - [request handle timeline]

httpd的中介軟體

httpd庫提供了before方法, 為開發人員自定義'中介軟體'行為提供了可能. 具體使用方法請參考http庫.

http content

每個http請求都會在呼叫before與使用者註冊的路由時為其傳入一個content, 這個Content是客戶端請求的所有引數.

args : 支援標準get或者post的引數, 對a[1]=1&a[2]=2將會不會解析為陣列型別; 支援multipart/form-data的引數傳遞方式;

header: 原始header key-value表, 框架層不會進行header進行內容解析. (一般情況下沒這個必要);

body : 目前body支援這些型別: multipart/form-dataapplication/x-www-form-urlencodedapplication/jsonapplication/xml;

json/xml: 在body為json型別的時候, content的json屬性為true; 在body為xml型別的時候, content的xml屬性為true.

file : 當客戶端使用multipart/form-data傳遞資料時將會有這個屬性; 這個屬性是陣列型別;

繼續學習

一下章我們一起學習如何利用template庫