文档章节

Lua Web快速开发指南(4) - 详细了解httpd库的作用

水果糖的小铺子
 水果糖的小铺子
发布于 06/14 04:43
字数 974
阅读 5
收藏 0
Lua

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库构建httpd模板引擎

© 著作权归作者所有

水果糖的小铺子
粉丝 23
博文 153
码字总数 73315
作品 1
广州
程序员
私信 提问
Lua Web快速开发指南(1) - 初识cf框架

cf是什么? cf全称为: CoreFramework. 一个基于Reactor事件驱动与协程的lua高性能网络框架, 目前主要面向HTTP Application开发. cf内部主要实现了包括HTTP与HTTP Over Websoket协议的Server,...

水果糖的小铺子
06/14
133
0
Lua Web快速开发指南(3) - 初识httpd库路由

本章假设您已经知道httpd server如何快速搭建, 并且知道cf的启动流程与运行流程, 知晓httpd如何创建与启动. 回顾上一章节 我们利用httpd内置库快速实现了一套httpd静态文件server, 其中包括静...

水果糖的小铺子
06/14
22
0
Lua Web快速开发指南(2) - cf的运行机制简介与基于httpd库的开发环境搭建

从本章开始假设大家都熟悉lua语法. 运行流程 在上一章节学会了如何安装cf后, 本章节就会介绍cf到运行机制与httpd的server搭建! cf是一个非常典型的基于协程的事件驱动开发框架在封装成API后,...

水果糖的小铺子
06/14
28
0
core_framework —— 基于libev的轻量级lua网络开发框架

大道至简, 返璞归真. 前言 在发表这篇博文的前夕, 还有一些小伙伴在提问一些以下相关的问题: 性能怎么样? 是否容易上手? 开发目标在哪? 如何反馈问题? 对比行业内的lua开源项目有何优势? 等...

水果糖
03/27
80
0
Lua Web快速开发指南(5) - 利用template库构建httpd模板引擎

介绍template 模板引擎是为了使用户界面与业务数据(内容)分离而产生的, 其本身并不是一种深奥的技术. template模板引擎首先会将合法的模板编译为lua函数, 然后将模板文件和数据通过模板引擎...

水果糖的小铺子
06/14
19
0

没有更多内容

加载失败,请刷新页面

加载更多

计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
昨天
10
0
再见 Spring Boot 1.X,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束。 其实早在2018年7月30号,Spring 官方就已经在博客进行过预告,Spring Boot 1.X 将维...

Java技术剑
昨天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部