Handlers are represented by routes, grouping related request handling logic into single files, and are the common point of interaction between your database, html and any other services you may need.
NOTE: A handler's only job is to respond to a HTTP request.
To create a new handler function files, use the
coast gen code command:
coast gen code author
This command creates a boilerplate file in the
; src/author.clj (ns author (:require [coast])) (defn index [request]) (defn view [request]) (defn build [request]) (defn create [request]) (defn edit [request]) (defn change [request]) (defn delete [request])
A handler can be accessed from a route.
This is done by referencing the handler as a keyword in your route definition:
; routes.clj [:get "/authors" :author/index]
The part before the
/ is a reference to the handler file (e.g.
The part after the
/ is the name of the function you want to call (e.g.
; routes.clj ; src/author.clj -> (defn index [request]) [:get "/authors" :author/index] ; src/admin/dashboard.clj -> (defn index [request]) [:get "/authors" :admin.dashboard/index] ; src/a/deep/path/file.clj -> (defn create [request]) [:get "/a-deep-path" :a.deep.path.file/create]
As your defined handler functions are route handlers, they will receive the request map as an argument.
; src/author.clj (ns author (:require [coast])) (defn index [request] (let [params (:params request) session (:session request) errors (:errors request)] ; code generating a response goes here ))