Modularizing the application
So far, our server has been started from the main()
function. This was simple to set up, but this doesn't allow us to test our application.
In Ktor, the code is usually organized into modules. Let's rewrite our main
function, as follows:
fun main() { embeddedServer( CIO, port = 8080, module = Application::mainModule ).start(wait = true) }
Here, instead of providing the logic of our server within a block, we specified a module that will contain all the configurations for our server.
This module is defined as an extension function on the Application
object:
fun Application.mainModule() { install(ContentNegotiation) { json() } ...