Ring 笔记 - 核心概念
2024-09-07 10:40:10
Ring 是一个在 Clojure 中的对于 HTTP 的抽象,是构建 Web 应用的底层接口和库,类似于 Java 中的 Servlet
核心概念
Handler
Handler 是一个定义web应用的函数,其有一个表示 HTTP Request 请求的 map 参数,并返回一个 表示 HTTP Response 的 map
(defn hello-world [request]
{:status 200
:headers {"Content-Type" "text/plain"}
:body "Hello World"})
Request
Request 使用一个 map 表示 HTTP Request 对象,其中还可以通过 moddleware 添加一些自定义的键值对
标准 key 如下:
:server-port 端口
:server-name 服务器名或IP
:remote-addr 客户端IP地址或代理地址
:uri 域名后的全路径
:query-string 查询字符串
:scheme 协议 http 或 https
:request-method 请求方式
:headers 请求头
:body 请求内容
Response
用来代表返回的 HTTP Response,是一个包含三个 key 的 map
:status HTTP 状态码
:headers 返回的 HTTP headers
:body 返回内容
Middleware
Middleware 用于给 handler 添加额外的功能,它需要接受一个 handle 参数,返回一个新的 handler
(defn wrap-content-type [handler content-type]
(fn [request]
(let [response (handler request)]
(assoc-in response [:headers "Content-Type"] content-type))))
使用
(def app
(wrap-content-type handler "text/html"))
(def app
(-> handler
(wrap-content-type "text/html")
(wrap-keyword-params)
(wrap-params)))
Middleware 在 Ring 中会很频繁的使用,包含参数处理、Session处理、文件上传等都是通过 middleware 完成的
最新文章
- 2015年软件测试STATE报告
- json 构造和解析
- adapter(转自Devin Zhang)
- java 获取某个URL的文件扩展名的方法(非精确,精确的扩展名应该使用服务器返回的MIME-TYPE)
- iOS客户端的在线安装和更新——针对ADHoc证书
- magento -- 如何改善前台图片质量
- 如何使用编辑模板在ASPxGridView中进行新增修改(除去常规的gridviw模板编辑外)
- 深入解析PHP 5.3.x 的strtotime() 时区设定 警告信息修复
- Anroid之Intent的使用
- ios 游戏《魂斗罗》 AL文件素材破解
- unity3d插件Daikon Forge GUI 中文教程-1-Daikon Forge介绍
- mvc 在弹出框中实现文件下载
- mysql的执行过程
- 使用TTS实现Oracle跨版本迁移
- [POI2007]ODW-Weights(贪心)
- python接口自动化28-requests-html爬虫框架
- java 并发包runnable 与 callable
- JS 格林威治时间格式(GMT)格式化
- 通过Parcelable协议传递数据出现系列错误
- asp.net --- reponse对象写图片
热门文章
- JavaScript的自调用函数
- Vue2.0 【第二季】第8节 Component 父子组件关系
- String的那些事
- axios请求拦截器
- Django 中自定义用户模型及集成认证授权功能总结
- centOS7python版本升到3
- css hover 动画 transition:background-color 0.2s,color 0.2s; 外层套内层,正常是 里外层 鼠标上来 外层有hover,如果就想到里层hover触发外层hover,要用外层position 定义绝对定位,内层的hover跳出外层的div,这样视觉上就是两个单独的div,进行内外层联动。
- Mol. Cell. Proteomics | 癌细胞衍生的小细胞外囊体通过促进HGF-Met途径促进受体细胞转移
- 泛微E-cology OA 远程代码执行漏洞
- Longest subarray of target sum