aardio 文档

fastcgi.client 库模块帮助文档

fastcgi 成员列表 #

FastCGI协议实现模块

fastcgi.client #

FastCGI客户端

fastcgi.client() #

创建FastCGI客户端

返回对象:fastcgiclientObject

全局对象 成员列表 #

session["字符串参数"] #

获取或设置session
值不允许包含函数、类等可执行代码

fastcgiclientObject 成员列表 #

fastcgiclientObject.customErrors #

fastcgiclientObject.customErrors = {  
    [404] = function(response){  
        response.status = "404 Not Found";  
        response.write("404 Not Found"); /*自定义错误页*/  
    }   
}

fastcgiclientObject.getStream #

function(){ if(!owner.stream){ __/*参考fastcgi.stream*/ } return owner.stream;
}

fastcgiclientObject.run( httpProc ) #

fastcgiclientObject.run(   
    function(response,request,session){   
         response.loadcode( request.path /*可省略,可增加多个模板参数,  
在被调用文件的函数外部可使用owner参数获取首个模板参数,  
也可以使用...获取多个模板参数*/ );  
    }     
);

request 成员列表 #

Web服务端请求对象,
request对象必须由服务端框架自动维护,
用户发起不同的请求时request对象都是不同的,
并且由服务端框架自动设置为全局变量。
注意在单线程异步HTTP服务端内,应优先通过函数参数传递此对象,

request的接口规范由标准库中fastcgi.client定义,
目前aardio提供的所有HTTP服务端框架都兼容此接口。

request.contentLength #

请求消息正文的长度
数值

request.contentType #

请求信息的MIME类型

request.cookies[] #

request.cookies["/*名字请小写*/"]

request.createSessionId() #

应用程序可调用此函数重新创建新的会话ID

request.documentBase #

嵌入 HTTP 服务器网站根目录,
此路径不同于 aardio 应用程序根目录。
在 FastCGI 环境下总是为 "/"

request.path 等于 request.documentBase + request.pathInfo

request.documentRoot #

网站应用程序根目录,
也是当前 aardio 应用程序根目录

request.environ #

CGI环境变量,
环境变量是由多个键值对组成的表,
所有具有值的变量都是字符串类型,即使是端口号也不可能出现数值
键名必须大写

request.get["字符串参数"] #

URL请求参数
名值对组成的表对象,参数名一律小写

request.headers["字符串参数"] #

HTTP请求头,表对象,
所有请求头的键名已全部转为小写,请求头的值值都是字符串类型

http服务端可选同时以数组形式保存原始http头
数组的第个元素都是包含键、值两个元素的子数组
但服务端可选不使用数组存放任何HTTP头

request.host #

请求的网站域名

request.keepAlive #

客户端是否请求保持连接

request.method #

HTTP请求方法
例如"GET"、"POST"

request.path #

请求 URL 中的路径部分,前面包含 documentBase 目录。
注意请求路径不能开始于"/config/","/lib/"

request.path 等于 request.documentBase + request.pathInfo

request.pathInfo #

请求 URL 中的路径部分,忽略 documentBase 目录。
注意请求路径不能开始于"/config/","/lib/"

request.path 等于 request.documentBase + request.pathInfo

request.postData() #

获取原始上传数据
multipart/form-data表单上传的文件数据应使用postFileData函数读取

request.postFileData() #

可以使用此函数判断当前请求是否上传文件
获取multipart/form-data表单上传的文件数据
如果无上传数据返回空值,
解析出错返回空值并发送400错误后关闭页面输出

此函数的返回值是一个fsys.multipartFormData对象
关于数据的格式请参考标准库中该对象的文档,

返回对象:fsysmultipartFormDataObject

request.postJson() #

如果请求格式为 application/json 或 text/json ,
返回 JSON 格式请求数据并解析为 aardio 对象返回
解析失败返回 null

request.post["字符串参数"] #

提交表单参数
名值对组成的表对象,参数名一律小写

request.protocol #

HTTP协议版本

request.query("字符串参数") #

返回URL参数或表单参数
参数名请一律小写

request.remoteAddr #

客户端IP地址

request.scheme #

请求URL中协议部分,值为"http"或"https"

URL协议部分

request.serverPort #

请求的服务器端口,数值

request.sessionId #

会话ID,
应用程序需要自行管理会话过期时间

request.uri #

请求路径
带GET参数

request.url #

请求URL
不带GET参数

response 成员列表 #

Web服务端响应对象,
response对象必须由服务端框架自动维护,
用户发起不同的请求时response对象都是不同的,
并且由服务端框架自动设置为全局变量。
注意在单线程异步HTTP服务端内,应优先通过函数参数传递此对象,

response的接口规范由标准库中fastcgi.client定义,
目前aardio提供的所有HTTP服务端框架都兼容此接口。

response._headersWritten #

是否已向客户端发送 HTTP 头。
如果已发送 HTTP 头,则后续修改 HTTP 状态码或响应头将被忽略。
调用代码不应修改此属性。

response.charset #

输出字符集
可以为空,默认值为UTF-8
不建议更改此值

response.close() #

关闭输出
此函数终止执行页面后续代码

response.close(true) #

关闭页面输出
但继续执行页面后续代码

response.closed #

HTTP应答对象是否已关闭
用于判断本次HTTP应答是否已被 response.close 函数关闭
因为response.close() 会抛出空异常自动退出当前代码,
所以一般不需要判断这个值
此属性的值应由HTTP服务器自动维护,用户不可修改

response.contentType #

response.contentType = "application/json";/*指定响应数据的MIME类型,默认为"text/html"*/

response.cookieDomain #

默认cookie域名

response.cookieHttpOnly #

设为true所有cookie默认加上HttpOnly属性

response.cookiePath #

默认cookie目录

response.cookieSecure #

设为true所有cookie默认加上secure属性

response.cookies[] #

response.cookies["/*键名*/"] = {
    value = "值";
    expires = time().addday(7);
    maxAge = 3600;
}

response.customErrors[404] #

response.customErrors[404] = function(response,request,session){
    response.status = "404 Not Found";
    response.write("404 Not Found"); /*自定义错误处理函数,  
每次请求仅第一个自定义错误处理函数会被调用*/
}

response.defalutDocument #

指定loadcode函数加载aardio代码时的默认文件名
默认为"main.aardio",不建议修改

response.error() #

输出一个或多个500错误信息,
必须在页面尚未输出响应头时调用,
参数将自动转换为字符串对象
table转换为格式化的对象输出
此函数终止执行页面后续代码

response.errorStatus() #

数值参数@1为HTTP错误代码,
可选用字符串参数 @2 指定页面默认输出的文本信息。
触发自定义错误处理函数、或返回对应HTTP状态码。
必须在页面尚未输出响应头时调用,
此函数终止执行页面后续代码

response.eventStream #

按 text/event-stream 协议格式输出表对象。
wsock.tcp.simpleHttpServer,wsock.tcp.asynHttpServer 已自动支持。
IIS 需要在处理程序映射配置中添加 responseBufferLimit="0"(注意备份原配置),

参考文档

response.eventStream(message) #

将参数 @message 指定的表对象按 text/event-stream 格式输出。
该表对象中值类型为表的对象自动转换为 JSON 输出。
response.contentType 自动指定为 "text/event-stream"

response.flush() #

发送并清空缓冲区。
IIS 仍然会继续在缓冲区缓存输出。
IIS 内如果要实时输出请修改 FastCGI 缓冲区大小为 0
参考文档

response.headers[] #

响应HTTP头,
值可以是字符串、或者多个字符串值组成的数组,
值是数组时则自动输出多个名值对到客户端,
键名的每个单词的首字母必须大写、其他字母必须小写
注意:这与请求头统一小写是不同的

response.jsonPrettyPrint #

response.jsonPrettyPrint = true;/*指定respose.write函数将对象转换为JSON输出时否缩进格式化*/

response.keepAlive #

服务端是否保持连接
此属性为标准库为HTTP服务器所保留
HTTP服务器可以忽略该值
或者由HTTP服务器自动维护该值
用户不应修改此属性

response.loadcode #

运行服务端 aardio 代码或下载其他文件。

参数 @1 如果指定 *.aardio 文件则执行并解析 aardio 模板代码。
如果指定其他类型的文件则直接下载文件。

注意下载是比较复杂的功能,直接调用这个函数是更可靠的选择。
自己去实现这一套代码工作量可能很大,一般没有必要。

可以参考『扫码传文件』范例,这个程序在网上转发很多,用的人也不少。
上传下载都支持,其中下载就是调用这里的 response.loadcode 函数。

response.loadcode("文件路径",...) #

省略参数则默认以 request.path 为参数。

参数 @1 如果指定 *.aardio 文件则执行并解析 aardio 模板代码。
后面的其他参数作为模板参数传给被调用的 aardio 文件。
在被调用文件的函数外部可使用 owner 参数获取首个模板参数,
也可以使用...获取多个模板参数。
关于模板语法请查看帮助文档

如果指定其他文件路径,则下载文件。
注意下载是比较复杂的功能,直接调用这个函数是更可靠的选择。

response.preheaders #

指定在headers发送到客户端以前发送的HTTP头
此值将使用 web.joinHeaders 函数格式化然后再发送
可以指定字符串,数组,或键值对,键值对的值可以是多个值组成的数组
如果参数是键值对,自动对值中的宽字符按UTF-8编码进行UrlEncode编码

response.redirect("字符串参数") #

302重定向,
必须在页面尚未输出响应头时调用,
参数@1可以是相对路径或任意网址,
此函数终止执行页面后续代码

response.redirect("字符串参数",301) #

301重定向,
必须在页面尚未输出响应头时调用,
参数@1可以是相对路径或任意网址,
此函数终止执行页面后续代码

response.status #

响应状态码,值可以为数值或文本,
默认为"200 OK"

response.transferChunked #

是否使用分块传输协议
此属性为标准库为HTTP服务器所保留
HTTP服务器可以忽略该值
或者由HTTP服务器自动维护该值
用户不应修改此属性

response.write() #

输出一个或多个值,
参数将自动转换为字符串对象
可直接输出结构体,其他table转换为JSON输出

response.writeBuffer(buffer,长度) #

输出 buffer 对象中的数据

session 成员列表 #

Web服务端会话对象,
session对象必须由服务端框架自动维护,
用户发起不同的请求时session对象都是不同的,
并且由服务端框架自动设置为全局变量。

session的接口规范由标准库中fastcgi.client定义,
目前aardio提供的所有HTTP服务端框架都兼容此接口。

session.* #

获取或设置session
值不允许包含函数、类等可执行代码

session.clear() #

清空session

session.save() #

保存session,此函数在请求结束时会自动调用

session.start() #

载入session,
此函数会在sessionHandler名字空间下查找自定义的加载器,
如果没有找到默认会使用sessionHandler.default加载session,
可选在参数中指定过期时间,以秒为单位
如果没有调用此函数,首次访问session的键值时会自动调用

Markdown 格式