lua web快速開發指南(4) - 詳細瞭解httpd庫的做用

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

httpd庫默認狀況下就能工做的很好, 可是在一些需求較爲極端的場景仍是須要微調一下參數.github

httpd經常使用的內置方法介紹

1. httpd:timeout(number)

設置每一個鏈接到最大空閒(idle)鏈接等待時間, 超過這個數值httpd將主動斷開鏈接. (默認值爲:30秒)json

2. httpd:max_path_size(number)

設置Path的最大長度, 超過這個值httpd將會返回414. (默認值爲: 1024)api

3. httpd:max_header_size(number)

設置Header最大長度, 超過這個值httpd將會返回431. (默認值爲: 65535)數組

4. httpd:max_body_size(number)

設置Body的最大長度, 超過這個值將會返回413. (默認爲 1024 * 1024)app

5. httpd:before(function)

before方法決定API與USE路由回調在觸發以前的行爲, 默認狀況下容許全部路由經過.框架

before方法通常用來設置與修改用戶驗證路由行爲(例如頭部驗證), 這提供了開發者基於before函數設計中間件的機會.函數

當開發者設置了function後(便是是一個空函數), 須要利用http庫來決定行爲.post

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庫構建httpd模板引擎

相關文章
相關標籤/搜索