RingClojure 的 Web 框架
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 相应
- request map,HTTP 请求的 map 表示
- response map,HTTP 相应的 map 表示
这5个组件的关系可用下图表示(By Ring 作者):
+---------------+
| Middleware |
| +---------+ | +---------+ +--------+
| | |<-- request ----| | | |
| | Handler | | | Adapter |<---->| Client |
| | |--- response -->| | | |
| +---------+ | +---------+ +--------+
+---------------+
Hello World
(ns learn-ring.core
(:require [ring.adapter.jetty :refer [run-jetty]]))
(defn handler [req]
{:headers {}
:status 200
:body "Hello World"})
(defn middleware [handler]
"Audit a log per request"
(fn [req]
(println (:uri req))
(handler req)))
(def app
(-> handler
middleware))
(defn -main [& _]
(run-jetty app {:port 3000}))
运行上面的程序,就可以启动一个 Web 应用,然后在浏览器访问就可以返回Hello World
,同时在控制台里面会打印出请求的 uri。
评论
UliwebPython的Web框架
Uliweb是一个新的PythonWebFramework,它之所以会产生是因为现有的框架多少有些令人不满意的地方,而且许多情况下这些不满意的地方或多或少对于Web开发有影响,因此在经过对不少框架的学
UliwebPython的Web框架
0
GrokPython的Web框架
Grok是一个为Python开发者提供的Web应用开发框架,Grok的重点是敏捷开发,是一个易用而且功能强大的开发框架,基于Zope3技术。
GrokPython的Web框架
0
TurismoJava的Web框架
turismo是一个类似Sinatra的Java的微型Web框架。示例代码:publicclassAppRoutesextendsRoutesList{ protectedvoidmap(){
TurismoJava的Web框架
0
YesodHaskell的web框架
Yesod是Haskell的Web框架用于开发类型安全、RESTful、高性能的Web应用。安装方法:cabalinstallyesod-platform
YesodHaskell的web框架
0
XitrumScala 的 Web 框架
xitrum是一个Scala的Web框架,基于Netty开发。结构如下图所示:+-----------------+| Yourapp |+-----------------+| X
XitrumScala 的 Web 框架
0
GolangerGo 的 Web 框架
Golanger是一个轻量级的Web应用框架,使用Go语言编写。Golanger框架主要实现了MVC模式(三层架构模式)(Model-View-Controller),它是软件工程中的一种软件架构模式
GolangerGo 的 Web 框架
0
GeddyNode.JS 的 Web 框架
Geddy是一个简单、结构化的用于Node.js的Web框架,特点是易用、快速而且模块化。包含内容协商、数据库适配器(支持PostgreSQL、MongoDB、Riak)、非堵塞、支持多模板引擎等等。
GeddyNode.JS 的 Web 框架
0
gwkGo 的 Web 框架
Go语言实现的WebSeverFramework.启动代码://./demo/basic/main.goformoredetailserver,err:=wk.NewDefaultServer()if
gwkGo 的 Web 框架
0