Ring Clojure 的 Web 框架开源项目

我要开发同款
匿名用户2019年05月21日
143阅读
开发技术Clojure
所属分类HTTP服务器、服务器软件
授权协议MIT

作品详情

Ring是一个Clojure的Web框架,它与Python的WSGI和Ruby的Rake非常类似。通过把HTTP的细节抽象为简单且模块化的API,Ring允许Web应用程序由模块化组件构成,这些组件可以在各种应用程序、Web服务器和Web框架之间共享,用来构建类型广泛的应用。

Ring充分体现了函数式编程的思想——通过一系列函数的组合形成了一个易于理解、扩展的HTTP处理链。

Ring规范里面有如下5个核心概念:

handlers,应用逻辑处理的主要单元,由一个普通的Clojure函数实现middleware,为handler增加额外功能adapter,将HTTP请求转为Clojure里的map,将Clojure里的map转为HTTP相应requestmap,HTTP请求的map表示responsemap,HTTP相应的map表示

这5个组件的关系可用下图表示(By Ring作者):

+---------------+|Middleware||+---------+|+---------++--------+|||<--request----||||||Handler|||Adapter|<---->|Client||||---response-->|||||+---------+|+---------++--------++---------------+

HelloWorld

(nslearn-ring.core(:require[ring.adapter.jetty:refer[run-jetty]]))(defnhandler[req]{:headers{}:status200:body"HelloWorld"})(defnmiddleware[handler]"Auditalogperrequest"(fn[req](println(:urireq))(handlerreq)))(defapp(->handlermiddleware))(defn-main[&_](run-jettyapp{:port3000}))

运行上面的程序,就可以启动一个 Web应用,然后在浏览器访问就可以返回HelloWorld,同时在控制台里面会打印出请求的uri。

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论