简介
Ring是Clojure的HTTP服务端抽象,定义了一套简洁、统一的编程接口,从而提供极好的模块化和可复用能力。
概念
请参考Ring规范
Handler
Handler是一个函数,接受请求Map作为参数,输出响应Map。
Middleware
中间件用于在Handler之上增加功能。一般情况下,中间件是一个高阶函数,接受一个或多个Handler以及配置选项作为参数,输出一个拥有增强功能的新的Handler。
请求->中间件->Handler->响应->中间件
Adapter
适配器是一个函数,接受两个参数,一个Handler和一个选项Map。完成初始化后,适配器接收HTTP请求,解析为一个请求map,传入该map调用handler。然后使用handler输出的响应map构造HTTP响应,并发送回客户端。
Request Map / Response Map
请求map和响应map都是普通的clojure map,规定了一系列的key,是对HTTP请求和响应的抽象,具体见Ring规范。