zoukankan      html  css  js  c++  java
  • Ring 笔记

    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 完成的

  • 相关阅读:
    获取url中的参数
    css 实现单行以及多行文本溢出显示省略号
    页面跳转不带 referrer的方法
    iframe加载完成事件
    es6模块化规则(一)
    kindle电子书下载网站收藏
    vue多页面项目配置
    使用原生ajax及其简单封装
    在vue中使用jq或者第三方插件
    写博客常用语法
  • 原文地址:https://www.cnblogs.com/zawier/p/9690006.html
Copyright © 2011-2022 走看看