Ring is a Clojure web applications library inspired by Python's WSGI and Ruby's Rack. By abstracting the details of HTTP into a simple, unified API, Ring allows web applications to be constructed of modular components that can be shared among a variety of applications, web servers, and web frameworks.
The SPEC.md file at the root of this distribution provides a complete description of the Ring interface. The Wiki contains more in-depth documentation on how to use Ring.
ring/ring
- meta-package containing all relevant dependenciesring/ring-core
- core functions and middleware for Ring handlers,
requests and responsesorg.ring-clojure/ring-core-protocols
- contains only the protocols
necessary for building Ring responsesorg.ring-clojure/ring-websocket-protocols
- contains only the protocols
necessary for WebSocketsring/ring-devel
- functions for developing and debugging Ring
applicationsring/ring-servlet
- construct legacy Java Servlets (≤ 4.0) from Ring
handlersorg.ring-clojure/ring-jakarta-servlet
construct
Jakarta Servlets (≥ 5.0) from Ring handlersring/ring-jetty-adapter
- a Ring adapter that uses an embedded
Jetty web serverTo include one of the above libraries, for instance ring-core
, add
the following dependency to your deps.edn
file:
ring/ring-core {:mvn/version "1.12.0"}
Or to your Leiningen project file:
[ring/ring-core "1.12.0"]
Please read CONTRIBUTING.md before submitting a pull request.
This project borrows heavily from Ruby's Rack and Python's WSGI; thanks to those communities for their work. Thanks also go to the many individuals who have contributed to Ring's code and documentation over the years.
Copyright © 2009-2024 Mark McGranaghan, James Reeves & contributors.
Released under the MIT license.
Can you improve this documentation? These fine people already did:
James Reeves, Mark McGranaghan, weavejester, Tero Paloheimo, Audrius & RainerWasserfuhrEdit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close