use: (import (igropyr http))

server

procedure: (server get post set listen)

return: unspecified

server过程开启服务器监听。

前两个参数接受一个过程,分别是服务器接受到GET和POST请求的回调。如:(request do-when-request)

后两个参数接受一个association list,开启监听之前服务器读取链表中特定字段对服务器进行配置。

后两个链表的结构分别为接受一个以'staticpath,'connection,'keepalive为key的key-value list和一个以'ip, 'port为key的key-value list。

使用server的例子如下:

(server

(request do-when-get-request)

(request do-when-post-request)

(set)

(listen))

request

procedure: (request callback)

(func list -> string -> string -> string) -> nothing

request 接受一个需要三个参数的过程作为回调。

在接受到GET请求时,request 将 request_header, path_info, query_string三个参数传给callback。

在接受到POST请求时,request 将 request_header, path_info, payload三个参数传给callback。

callback必须返回一个含有标准http头的字符串以备request调用 Igropyr 底层发送给客户端。

response

procedure: (response status type content)

int -> string -> string / list -> string

response接受三个参数,http状态码,返回类型和内容。其中status必须为数字,type为字符串。

当content为列表时,取第一个值为cookie,第二个值为返回内容。

当content为字符串时,cookie设置为“”,content为返回内容。

response 将以上信息格式化为含有标准http头信息的字符串,通常用于构造request过程的回调。

sendfile

procedure: (sendfile type content)

return: string

sendfile接受两个参数,文件MIME类型和路径。

当type为""时,服务器使用自动检测到的类型。

通常用于构造request过程的回调。

set

procedure: (set (name value) ...)

return: association list

set 接受任意数量用于配置服务器设置的s表达式。

name的有效值有:

'staticpath 用于设定服务器静态文件路径。对应value为字符串,默认值为“”

'connection 用于设定服务器最大连接数。对应value为整形,默认值为 1024

'keepalive 用于设定服务器链接时长。对应value为整形,默认值为 5000,当设为0时为关闭长连接。

缺省设置会自动套用默认值。

listen

procedure: (listen)

procedure: (listen ip)

procedure: (listen port)

procedure: (listen ip port)

return: association list

listen 接受零至两个参数配置服务器监听ip和端口。

当listen接受一个字符串参数时,将其值用于设置监听ip。

当listen接受一个整形参数时,将其值用于设置监听端口。

当listen接受两个参数时,依次将其值用于设置监听ip和端口。

缺省值为:ip:0.0.0.0 port:80

errorpage

procedure: (errorpage error_code)

procedure: (errorpage error_code error_info)

return: string

errorpage接受一至两个参数,第一个参数是状态码,第二个参数是出错信息。

errorpage返回格式化好的含有标准http头信息的字符串,用于便捷的向客户端返回出错页面。

par

procedure: (par router_path request_path)

return: boolean

par 是一个高效的字符串模糊对比过程,返回布尔值。

它的第一个参数接受路由设置的路径,第二个参数接受访问请求路径。

当第一个参数含有*时,第二个参数从*对应字符开始至下一个/号的内容被忽略。

所以:

(par "/foo" "/foo") => #t

(par "/foo" "/bar") => #f

(par "/*" "/foo") => #t

(par "/foo/*" "/foo/bar") => #t

(par "/*/bar" "/foo/bar") => #t

(par "/f*/bar" "/foo/bar") => #t

(par "/f*/bar" "/boo/bar") => #f

(par "/foo/b*" "/foo/bar") => #t

(par "/foo/b*" "/foo/far") => #f

header-parser

procedure: (header-parser header key)

return: string

header-parser是一个用于在http-header中查找相应值的高效实现。

path-parser

procedure: (header-parser path index)

return: string

path-parser 返回路径中特定的字段。

(path-parser "/foo/bar/baz" 0) => "foo"

(path-parser "/foo/bar/baz" 1) => "bar"

(path-parser "/foo/bar/baz" 2) => "baz"

(path-parser "/foo/bar/baz" 3) => ""

results matching ""

    No results matching ""