Rig是一个Clojure的Web框架,它与Pytho的WSGI和Ruby的Rake非常类似。通过把HTTP的细节抽象为简单且模块化的API,Rig允许Web应用程序由模块化组件构成,这些组件可以在各种应用程序、Web服务器和Web框架之间共享,用来构建类型广泛的应用。
Rig充分体现了函数式编程的思想——通过一系列函数的组合形成了一个易于理解、扩展的HTTP处理链。
Rig规范里面有如下5个核心概念:
hadlers,应用逻辑处理的主要单元,由一个普通的Clojure函数实现middleware,为hadler增加额外功能adapter,将HTTP请求转为Clojure里的map,将Clojure里的map转为HTTP相应requestmap,HTTP请求的map表示resposemap,HTTP相应的map表示这5个组件的关系可用下图表示(By Rig作者):
+---------------+|Middleware||+---------+|+---------++--------+|||<--request----||||||Hadler|||Adapter|<---->|Cliet||||---respose-->|||||+---------+|+---------++--------++---------------+HelloWorld
(slear-rig.core(:require[rig.adapter.jetty:refer[ru-jetty]]))(defhadler[req]{:headers{}:status200:body"HelloWorld"})(defmiddleware[hadler]"Auditalogperrequest"(f[req](pritl(:urireq))(hadlerreq)))(defapp(->hadlermiddleware))(def-mai[&_](ru-jettyapp{:port3000}))运行上面的程序,就可以启动一个 Web应用,然后在浏览器访问就可以返回HelloWorld,同时在控制台里面会打印出请求的uri。
评论