Ktor
Building Asynchronous Servers and Clients in Kotlin
Ktor Plugin Update – Navigation, Refactoring, and more!
As a tooling company, we do realise the importance of providing proper support for the languages and frameworks you use.
In the case of Ktor, we started this journey by rewriting support for IntelliJ IDEA Ultimate completely from scratch, and the first step was a new and simplified project wizard, which has already been announced.
With the 1.5.3 update, we’re improving the options in the wizard, as well as bringing new functionality!
New Project Enhancements
The Project Wizard comes with two new options:
Storing configuration
Via the Configuration in
dropdown, you can define whether you want the generated project to store the server configuration as code, i.e. using the embeddedServer
option, or external HOCON
files.
Sample Code
By default, when adding Features (soon to be renamed to Plugins), the wizard generates some sample code for you to get you started. This is very useful for beginner, but may not be of value to more experienced users. We’ve now made this optional via the Add sample code
checkbox.
In both cases, Ktor will also generate the corresponding Run Configuration
entries.
Development Enhancements
One of our goals with Ktor support in IntelliJ IDEA is to improve the overall development experience. This release
brings a bunch of new functionality in this area.
Navigation
You can now navigate to actual routes across a project. For instance, if you have a Ktor server with a specific route, and you’re referencing it from a client, you can navigate to it using the standard IntelliJ IDEA shortcuts/actions (Ctrl/Cmd+Click or Ctrl/Cmd+B), or with
Globe icon next to the URL string
Much the same way, from a specific route definition, you can navigate to the usages
Finding routes with Search Everywhere
If you want to find a specific route in your application, you can do so using Search Everywhere
(Double Shift)
Endpoint View
To see a list of all endpoints that the current module offers, you can use the Show enpoints of module
which then displays a list of endpoints in the Endpoints
tool window
From this window, you can test the call as well as open it in the HTTP editor. It will automatically detect
parameters and prompt you for these
You can of course generate a test client request from a specific route using the Open in HTTP client
option from the globe icon.
Rename Refactoring
Ktor allows you to define routes in one of two ways:
- Using Strings
- Using Locations (a feature that is currently being reworked)
One drawback of using strings of course is, that when it comes to renaming, this can be a bit cumbersome. Not anymore!
Much like you can now navigate to URLs and find usages, you can also perform a rename refactor, knowing that any reference to them will be renamed too. This also includes parameter names.
The IDE allows you to define the scope you want the refactoring to be applied to in case you want to limit this.
Completion
Last but certainly not least, there is also support for completion.
This is just a taster of the many features we have planned, to improve the development, testing, and deployment experience with Ktor. We’d love for you to try the plugin and let us know if you have any feedback.