An Aqueduct application serves HTTP clients by sending responses for requests.
You create and link
Controller objects to handle requests. There are many subclasses of
Controller that handle common tasks, and you often create your own subclasses of
Controller to implement application logic. Most of your logic is implemented in subclasses of
ResourceController, a controller type geared for REST API endpoints.
You create a subclass of
ApplicationChannel to configure controllers used by your application. This subclass also initializes any services your application will use to fulfill requests, like database connections or third party API connections. Most often, you use a
Router controller at the entry point of your application channel to modularize your application logic.
Your application may have many configurable options. This configuration is handled in your application channel. Configuration file management is provided by application-specific
Configuration subclasses that add type and name safety to your configuration files.
Your application is run by using the
aqueduct serve command or the
bin/main.dart script. In either case, your application starts by creating multiple, memory-isolated threads that replicate your