Apart from the code used to configure and define your routes and endpoints, Cask also allows global configuration for things that apply to the entire web server. This can be done by overriding the following methods on cask.Main
or cask.MainRoutes
:
Makes the Cask report verbose error messages and stack traces if an endpoint fails; useful for debugging, should be disabled for production.
The cask program entrypoint. By default just spins up a webserver, but you can override it to do whatever you like before or after the webserver runs.
A logger that gets passed around the application. Used for convenient debug logging, as well as logging exceptions either to the terminal or to a centralized exception handler.
Cask is built on top of the Undertow web server. If you need some low-level functionality not exposed by the Cask API, you can override defaultHandler
to make use of Undertow's own handler API for customizing your webserver. This allows for things that Cask itself doesn't internally support.
The host & port to attach your webserver to.
The response to serve when the incoming request does not match any of the routes or endpoints; defaults to a typical 404
The response to serve when the incoming request matches a route and endpoint, but then fails for other reasons. Defaults to 400 for mismatched or invalid endpoint arguments and 500 for exceptions in the endpoint body, and provides useful stack traces or metadata for debugging if debugMode = true
.
Any cask.Decorator
s that you want to apply to all routes and all endpoints in the entire web application. Useful for inserting application-wide instrumentation, logging, security-checks, and similar things.
About the Author: Haoyi is a software engineer, an early contributor to Scala.js, and the author of many open-source Scala tools such as Cask, the Ammonite REPL and FastParse.
If you've enjoy using Cask, or enjoyed using Haoyi's other open source libraries, please chip in (or get your Company to chip in!) via Patreon so he can continue his open-source work