Controllers in Vapor, like in iOS applications, control the flow of the applications from a user request to the Response. Web applications typically follow a Model View Controller pattern where the request from the user goes to the router, and the router determines which controller and the function inside that controller to trigger to generate a Response. This is similar to user inputs, such as touch events in iOS apps, which trigger the ViewController to perform actions such as transitioning to another view controller or rendering a new view in the same View Controller.
At the beginning of this chapter, we explored different kinds of routes and how they are handled by a closure function. Now we will learn how to pass a controller class to the route so that the controller can handle one or multiple routes.