当前位置: 首页 > 软件库 > 服务器软件 > HTTP服务器 >

Ring

Clojure 的 Web 框架
授权协议 MIT
开发语言 Clojure HTML/CSS
所属分类 服务器软件、 HTTP服务器
软件类型 开源软件
地区 不详
投 递 者 干鑫鹏
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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

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

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

  1. handlers,应用逻辑处理的主要单元,由一个普通的 Clojure 函数实现
  2. middleware,为 handler 增加额外功能
  3. adapter,将 HTTP 请求转为 Clojure 里的 map,将 Clojure 里的 map 转为 HTTP 相应
  4. request map,HTTP 请求的 map 表示
  5. 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。

  • 简介 Go的标准包Container中包含了常用的容器类型,包括conatiner/list,container/heap,container/ring,本篇讲解container/ring的使用。 ring包 ring包提供了环形链表的操作。它仅导出了一个类型,Ring: // Ring表示环形链表中的元素。 type Ring struct { Value interface{} //

 相关资料
  • 本章重点介绍Web框架及其部署。 PyCharm具有部署代码和文件的简单功能。 要使用PyCharm部署代码,我们需要添加一个带有菜单选项Settings -》 Build, Execution-》 Deployment的Web服务器。 现在,包括部署项目所需的各种配置的所有设置。 在Mappings选项卡中,用户可以指定本地代码的位置以及远程复制到何处。 可以使用Tools -》 Deploym

  • tornado.web — RequestHandler and Application classes Thread-safety notes Request handlers Entry points Input Output Cookies Other Application configuration Decorators Everything else tornado.template

  • 本章重点介绍Web框架及其部署。 PyCharm具有部署代码和文件的简单功能。 要使用PyCharm部署代码,我们需要添加一个带有菜单选项:Settings -> Build, Execution -> Deployment 来部署Web服务器。 现在,包含部署项目所需的各种配置的所有设置。 在Mappings 选项卡中,用户可以指定本地代码的位置以及它应该远程复制到的位置。 代码可以使用工具菜单

  • 22. Web MVC框架

  • 第十三章介绍了如何开发一个Web框架,通过介绍MVC、路由、日志处理、配置处理完成了一个基本的框架系统,但是一个好的框架需要一些方便的辅助工具来快速的开发Web,那么我们这一章将就如何提供一些快速开发Web的工具进行介绍,第一小节介绍如何处理静态文件,如何利用现有的twitter开源的bootstrap进行快速的开发美观的站点,第二小节介绍如何利用前面介绍的session来进行用户登录处理,第三小

  • 了解了WSGI框架,我们发现:其实一个Web App,就是写一个WSGI的处理函数,针对每个HTTP请求进行响应。 但是如何处理HTTP请求不是问题,问题是如何处理100个不同的URL。 每一个URL可以对应GET和POST请求,当然还有PUT、DELETE等请求,但是我们通常只考虑最常见的GET和POST请求。 一个最简单的想法是从environ变量里取出HTTP请求的信息,然后逐个判断: de

  • 了解了WSGI框架,我们发现:其实一个Web App,就是写一个WSGI的处理函数,针对每个HTTP请求进行响应。 但是如何处理HTTP请求不是问题,问题是如何处理100个不同的URL。 每一个URL可以对应GET和POST请求,当然还有PUT、DELETE等请求,但是我们通常只考虑最常见的GET和POST请求。 一个最简单的想法是从environ变量里取出HTTP请求的信息,然后逐个判断: de

  • Python 作为一门强大的脚本语言,能够适应快速原型和较大项目的制作,它被广泛用于 web 应用程序的开发中。 Context WSGI Web 服务网关接口 (简称为 "WSGI" ) 是一种在 Web 服务器和 Python Web 应用程序框架之间的标准接口。 通过标准化 Web 服务器和Python web 应用程序框架之间的行为和通信,WSGI 使得编写可移植的的 Python web