Ballista是一个 Igropyr 官方开发的 应用于 Igropyr 服务器的Express风格web开发框架。
install: raven install ballista
use: (import (ballista ballista))
get
procedure: (get path handler)
procedure: (get path middleware ... handler)
return: unspecified
get
用于构建get方法路由,接受任意数量的路由层中间件。
handler接受两个参数,第一个参数取决于中间件处理结果,如无任何中间件则为header, path, query的list。
第二个参数是退出函数。
post
procedure: (post path handler)
procedure: (post path middleware ... handler)
return: unspecified
post
用于构建post方法路由,接受任意数量的路由层中间件。
handler接受两个参数,第一个参数取决于中间件处理结果,如无任何中间件则为header, path, payload的list。
第二个参数是退出函数。
next
procedure:(next x)
procedure:(next x y z ...)
return: (lambda (f) (f x y z ...))
next过程用于构造中间件,它接受任意个数参数并返回一个需要一个回调函数作为参数的过程。
next的参数用于调用这个回调函数,它们的参数个数必须相等。
get-use
procedure: (get-use middleware)
get-use用来设置get方法的应用层中间件。可以多次使用来设置多个中间件。
post-use
procedure: (post-use middleware)
post-use用来设置post方法的应用层中间件。可以多次使用来设置多个中间件。
staticpath
procedure: (staticpath path)
return: unspecified
staticpath
接受一个字符串作为静态文件夹路径设置,用于取代Igropyr原生(set)调用。
可缺省。
listen-on
procedure: (listen-on ip)
procedure: (listen-on port)
procedure: (listen-on ip port)
return: unspecified
设置服务器监听ip和端口,用于取代Igropyr原生(listen)调用。
可缺省。
server-on
procedure: (server-on)
return: unspecified
用于启动web服务器。用于取代Igropyr原生(server)的调用。
注意(server-on)
必须调用于get,post, staticpath和listen-on设置完毕后。
构造中间件
request函数 -> 应用层中间件 -> 路由-> 路由层中间件 -> 事务函数
约定:所有中间件接受两个参数,并用两个参数调用next函数。
第一个中间件的第一个参数将接收header, path, query/payload的list。
其他中间件的第一个参数由它前面的中间件决定。
第二个参数是退出函数,所有中间件必须将退出函数传递下去。
调用next函数将参数和退出函数传递到下一个中间件或事物函数。
调用退出函数将达到阻止访问或跳转的效果,它接受一个函数作为参数。
(define middleware
(lambda (req return)
(if <test>
(next req return)
(return handle403))))
关于以下过程,详见Catapult
库
res
send
host?
user-agent?
accept-language?
accept-encoding?
cookie?
connection?
query-parser