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模板引擎

相关文章
相关标签/搜索