httpd庫是基于HTTP 1.1協(xié)議實現(xiàn)而來, 內(nèi)置了高性能的http協(xié)議解析器與urldecode解析庫.
httpd庫默認情況下就能工作的很好, 但是在一些需求較為極端的場景還是需要微調(diào)一下參數(shù).
設(shè)置每個連接到最大空閑(idle)連接等待時間, 超過這個數(shù)值httpd將主動斷開連接. (默認值為:30秒)
設(shè)置Path的最大長度, 超過這個值httpd將會返回414. (默認值為: 1024)
設(shè)置Header最大長度, 超過這個值httpd將會返回431. (默認值為: 65535)
設(shè)置Body的最大長度, 超過這個值將會返回413. (默認為 1024 * 1024)
before方法決定API與USE路由回調(diào)在觸發(fā)之前的行為, 默認情況下允許所有路由通過.
before方法一般用來設(shè)置與修改用戶驗證路由行為(例如頭部驗證), 這提供了開發(fā)者基于before函數(shù)設(shè)計中間件的機會.
當開發(fā)者設(shè)置了function后(即是是一個空函數(shù)), 需要利用http庫來決定行為.
group方法提供了一種批量注冊路由的方式, 為一組同一組路由提供簡單便方便在注冊方法.
第一個參數(shù)type為需要批量注冊的路由類型; 初始化httpd對象后, 使用app.USE
或app.API
進行傳值;
第二個參數(shù)prefix為string類型的頭部; 例如:/api
、/admin
;
第三個參數(shù)為一組路由處理函數(shù)或處理類數(shù)組; 類型為: {route = '/login', class = class};
注意: 此方法僅支持批量注冊API與USE路由, 不可同時注冊不同類型路由;
listen方法用于告訴httpd對象監(jiān)聽指定端口.
第一個參數(shù)ip暫未被httpd使用(但是必須設(shè)置), 默認監(jiān)聽所有網(wǎng)卡的'0.0.0.0'地址與指定的端口號;
backlog為用戶最大連接等待隊列, 合理的設(shè)置能減少連接被重置的情況(默認值為128).
在httpd庫所有參數(shù)與路由設(shè)置完畢之后, 調(diào)用run方法開啟監(jiān)聽模式.
日志格式為: [年/月/日 時:分:秒] - [ip] - [x-real-ip] - [path] - [method] - [http code] - [request handle timeline]
httpd庫提供了before
方法, 為開發(fā)人員自定義'中間件'行為提供了可能. 具體使用方法請參考http庫.
每個http請求都會在調(diào)用before
與用戶注冊的路由時為其傳入一個content, 這個Content是客戶端請求的所有參數(shù).
args : 支持標準get或者post的參數(shù), 對a[1]=1&a[2]=2將會不會解析為數(shù)組類型; 支持multipart/form-data
的參數(shù)傳遞方式;
header: 原始header key-value表, 框架層不會進行header進行內(nèi)容解析. (一般情況下沒這個必要);
body : 目前body支持這些類型: multipart/form-data
、application/x-www-form-urlencoded
、application/json
、application/xml
;
json/xml: 在body為json類型的時候, content的json屬性為true; 在body為xml類型的時候, content的xml屬性為true.
file : 當客戶端使用multipart/form-data
傳遞數(shù)據(jù)時將會有這個屬性; 這個屬性是數(shù)組類型;
一下章我們一起學習如何利用template庫構(gòu)建httpd模板引擎
更多建議: