sitefox.web
Functions to start the webserver and create routes.
add-default-middleware
(add-default-middleware app & [session-options])Set up default express middleware for:
- Writing rotating logs to
logs/access.log. - Setting up sessions in the configured database.
- Parse cookies and body.
Pass the session-options map to configure the express-sessions package. Sitefox defaults will be shallow-merged with the options map passed in.
build-absolute-uri
(build-absolute-uri req path)Creates an absolute URL including host and port. Use inside a route: (build-absolute-uri req "/somewhere")
get-named-route
(get-named-route req route-name)Retrieve a route that has previously been named.
name-route
(name-route app route route-name)Attach a name to a route that can be recalled with get-named-route.
reset-routes
(reset-routes app)Remove all routes in the current app and re-add the default middleware. Useful for hot-reloading code.
serve
(serve app)Start serving an express app.
Configure BIND_ADDRESS and PORT with environment variables. They default to 127.0.0.1:8000.
setup-error-handler
(setup-error-handler app template selector view-component & [error-handler-fn])Sets up an express route to handle 404 and 500 errors. This must be the last handler in your server:
(defn setup-routes [app]
(web/reset-routes app)
; ... other routes
; 404 and 500 error handling
(web/setup-error-handler app template "main" component-error-page email-error-callback))
Pass it the express app, an HTML string template, query selector and a Reagent view-component. Optionally pass error-handler-fn which will be called on every 500 error with args req, error. The error view-component will be rendered and inserted into the template at selector.
The error component will receive three arguments: * req - the express request object. * error-code - the exact error code that occurred (e.g. 404, 500 etc.). * error - the error object that was propagated (if any).
Example:
(make-error-handler app my-template "main" my-error-component)
To have all 500 errors emailed to you and logged use tracebacks/install-traceback-handler and pass it as error-handler-fn.
start
(start)Create a new express app and start serving it. Runs (create) and then (serve) on the result. Returns a promise which resolves with app host port server once the server is running.
static-folder
(static-folder app route dir)Express middleware to statically serve a dir on a route relative to working dir.
strip-slash-redirect
(strip-slash-redirect req res n)Express middleware to strip slashes from the end of any URL by redirecting to the non-slash version. Use: `(.use app strip-slash-redirect)