FastCGI协议实现模块
FastCGI客户端
创建FastCGI客户端
获取或设置session
值不允许包含函数、类等可执行代码
fastcgiclientObject.customErrors = {
[404] = function(response){
response.status = "404 Not Found";
response.write("404 Not Found"); /*自定义错误页*/
}
}
function(){
if(!owner.stream){
__/*参考fastcgi.stream*/
}
return owner.stream;
}
fastcgiclientObject.run(
function(response,request,session){
response.loadcode( request.path /*可省略,可增加多个模板参数,
在被调用文件的函数外部可使用owner参数获取首个模板参数,
也可以使用...获取多个模板参数*/ );
}
);
Web服务端请求对象,
request对象必须由服务端框架自动维护,
用户发起不同的请求时request对象都是不同的,
并且由服务端框架自动设置为全局变量。
注意在单线程异步HTTP服务端内,应优先通过函数参数传递此对象,
request的接口规范由标准库中fastcgi.client定义,
目前aardio提供的所有HTTP服务端框架都兼容此接口。
请求消息正文的长度
数值
请求信息的MIME类型
request.cookies["/*名字请小写*/"]
应用程序可调用此函数重新创建新的会话ID
嵌入 HTTP 服务器网站根目录,
此路径不同于 aardio 应用程序根目录。
在 FastCGI 环境下总是为 "/"
request.path 等于 request.documentBase + request.pathInfo
网站应用程序根目录,
也是当前 aardio 应用程序根目录
CGI环境变量,
环境变量是由多个键值对组成的表,
所有具有值的变量都是字符串类型,即使是端口号也不可能出现数值
键名必须大写
URL请求参数
名值对组成的表对象,参数名一律小写
HTTP请求头,表对象,
所有请求头的键名已全部转为小写,请求头的值值都是字符串类型
http服务端可选同时以数组形式保存原始http头
数组的第个元素都是包含键、值两个元素的子数组
但服务端可选不使用数组存放任何HTTP头
请求的网站域名
客户端是否请求保持连接
HTTP请求方法
例如"GET"、"POST"
请求 URL 中的路径部分,前面包含 documentBase 目录。
注意请求路径不能开始于"/config/","/lib/"
request.path 等于 request.documentBase + request.pathInfo
请求 URL 中的路径部分,忽略 documentBase 目录。
注意请求路径不能开始于"/config/","/lib/"
request.path 等于 request.documentBase + request.pathInfo
获取原始上传数据
multipart/form-data表单上传的文件数据应使用postFileData函数读取
可以使用此函数判断当前请求是否上传文件
获取multipart/form-data表单上传的文件数据
如果无上传数据返回空值,
解析出错返回空值并发送400错误后关闭页面输出
此函数的返回值是一个fsys.multipartFormData对象
关于数据的格式请参考标准库中该对象的文档,
返回对象:fsysmultipartFormDataObject
如果请求格式为 application/json 或 text/json ,
返回 JSON 格式请求数据并解析为 aardio 对象返回
解析失败返回 null
提交表单参数
名值对组成的表对象,参数名一律小写
HTTP协议版本
返回URL参数或表单参数
参数名请一律小写
客户端IP地址
请求URL中协议部分,值为"http"或"https"
URL协议部分
请求的服务器端口,数值
会话ID,
应用程序需要自行管理会话过期时间
请求路径
带GET参数
请求URL
不带GET参数
Web服务端响应对象,
response对象必须由服务端框架自动维护,
用户发起不同的请求时response对象都是不同的,
并且由服务端框架自动设置为全局变量。
注意在单线程异步HTTP服务端内,应优先通过函数参数传递此对象,
response的接口规范由标准库中fastcgi.client定义,
目前aardio提供的所有HTTP服务端框架都兼容此接口。
是否已向客户端发送 HTTP 头。
如果已发送 HTTP 头,则后续修改 HTTP 状态码或响应头将被忽略。
调用代码不应修改此属性。
输出字符集
可以为空,默认值为UTF-8
不建议更改此值
关闭输出
此函数终止执行页面后续代码
关闭页面输出
但继续执行页面后续代码
HTTP应答对象是否已关闭
用于判断本次HTTP应答是否已被 response.close 函数关闭
因为response.close() 会抛出空异常自动退出当前代码,
所以一般不需要判断这个值
此属性的值应由HTTP服务器自动维护,用户不可修改
response.contentType = "application/json";/*指定响应数据的MIME类型,默认为"text/html"*/
默认cookie域名
设为true所有cookie默认加上HttpOnly属性
默认cookie目录
设为true所有cookie默认加上secure属性
response.cookies["/*键名*/"] = {
value = "值";
expires = time().addday(7);
maxAge = 3600;
}
response.customErrors[404] = function(response,request,session){
response.status = "404 Not Found";
response.write("404 Not Found"); /*自定义错误处理函数,
每次请求仅第一个自定义错误处理函数会被调用*/
}
指定loadcode函数加载aardio代码时的默认文件名
默认为"main.aardio",不建议修改
输出一个或多个500错误信息,
必须在页面尚未输出响应头时调用,
参数将自动转换为字符串对象
table转换为格式化的对象输出
此函数终止执行页面后续代码
数值参数@1为HTTP错误代码,
可选用字符串参数 @2 指定页面默认输出的文本信息。
触发自定义错误处理函数、或返回对应HTTP状态码。
必须在页面尚未输出响应头时调用,
此函数终止执行页面后续代码
按 text/event-stream 协议格式输出表对象。
wsock.tcp.simpleHttpServer,wsock.tcp.asynHttpServer 已自动支持。
IIS 需要在处理程序映射配置中添加 responseBufferLimit="0"(注意备份原配置),
将参数 @message 指定的表对象按 text/event-stream 格式输出。
该表对象中值类型为表的对象自动转换为 JSON 输出。
response.contentType 自动指定为 "text/event-stream"
发送并清空缓冲区。
IIS 仍然会继续在缓冲区缓存输出。
IIS 内如果要实时输出请修改 FastCGI 缓冲区大小为 0
参考文档
响应HTTP头,
值可以是字符串、或者多个字符串值组成的数组,
值是数组时则自动输出多个名值对到客户端,
键名的每个单词的首字母必须大写、其他字母必须小写
注意:这与请求头统一小写是不同的
response.jsonPrettyPrint = true;/*指定respose.write函数将对象转换为JSON输出时否缩进格式化*/
服务端是否保持连接
此属性为标准库为HTTP服务器所保留
HTTP服务器可以忽略该值
或者由HTTP服务器自动维护该值
用户不应修改此属性
运行服务端 aardio 代码或下载其他文件。
参数 @1 如果指定 *.aardio 文件则执行并解析 aardio 模板代码。
如果指定其他类型的文件则直接下载文件。
注意下载是比较复杂的功能,直接调用这个函数是更可靠的选择。
自己去实现这一套代码工作量可能很大,一般没有必要。
可以参考『扫码传文件』范例,这个程序在网上转发很多,用的人也不少。
上传下载都支持,其中下载就是调用这里的 response.loadcode 函数。
省略参数则默认以 request.path 为参数。
参数 @1 如果指定 *.aardio 文件则执行并解析 aardio 模板代码。
后面的其他参数作为模板参数传给被调用的 aardio 文件。
在被调用文件的函数外部可使用 owner 参数获取首个模板参数,
也可以使用...获取多个模板参数。
关于模板语法请查看帮助文档。
如果指定其他文件路径,则下载文件。
注意下载是比较复杂的功能,直接调用这个函数是更可靠的选择。
指定在headers发送到客户端以前发送的HTTP头
此值将使用 web.joinHeaders 函数格式化然后再发送
可以指定字符串,数组,或键值对,键值对的值可以是多个值组成的数组
如果参数是键值对,自动对值中的宽字符按UTF-8编码进行UrlEncode编码
302重定向,
必须在页面尚未输出响应头时调用,
参数@1可以是相对路径或任意网址,
此函数终止执行页面后续代码
301重定向,
必须在页面尚未输出响应头时调用,
参数@1可以是相对路径或任意网址,
此函数终止执行页面后续代码
响应状态码,值可以为数值或文本,
默认为"200 OK"
是否使用分块传输协议
此属性为标准库为HTTP服务器所保留
HTTP服务器可以忽略该值
或者由HTTP服务器自动维护该值
用户不应修改此属性
输出一个或多个值,
参数将自动转换为字符串对象
可直接输出结构体,其他table转换为JSON输出
输出 buffer 对象中的数据
Web服务端会话对象,
session对象必须由服务端框架自动维护,
用户发起不同的请求时session对象都是不同的,
并且由服务端框架自动设置为全局变量。
session的接口规范由标准库中fastcgi.client定义,
目前aardio提供的所有HTTP服务端框架都兼容此接口。
获取或设置session
值不允许包含函数、类等可执行代码
清空session
保存session,此函数在请求结束时会自动调用
载入session,
此函数会在sessionHandler名字空间下查找自定义的加载器,
如果没有找到默认会使用sessionHandler.default加载session,
可选在参数中指定过期时间,以秒为单位
如果没有调用此函数,首次访问session的键值时会自动调用