Skip to content
JF Hector-Labram edited this page Jun 1, 2022 · 12 revisions

You can create Ring response maps manually (see Concepts), but the ring.util.response namespace contains a number of useful functions to make this task easier.

The response function creates a basic "200 OK" response:

(response "Hello World")

=> {:status 200
    :headers {}
    :body "Hello World"}

You can then use functions like content-type to alter the base response to add in additional headers and other components:

(content-type (response "Hello World") "text/plain")

=> {:status 200
    :headers {"Content-Type" "text/plain"}
    :body "Hello World"}

Special functions also exist to create redirects:

(redirect "http://example.com")

=> {:status 302
    :headers {"Location" "http://example.com"}
    :body ""}

And to return static files or resources:

(file-response "readme.html" {:root "public"})

=> {:status 200
    :headers {}
    :body (io/file "public/readme.html")}
(resource-response "readme.html" {:root "public"})

=> {:status 200
    :headers {}
    :body (io/input-stream (io/resource "public/readme.html"))}

More information on these functions and others can be found in the ring.util.response API documentation.

Next Page - Static Resources