This post is going to walk through adding Swagger to an existing ASP.NET Core API application using Swashbuckle. The starting point for the code can be found here.
What is Swagger?
Swagger is a specification on documentationĀ an API. As I am sure we all know API documentation tends to get out of date fast and a lot of times is a low priority. Ā Swagger aims to help solve that problem using a format that is both human and machine readable which can be maintained in either JSON or YAMLĀ and can be auto generated using a tool like Swashbuckle. Check out this post by the Swagger team for the full introduction.
What is Swashbuckle?
Swashbuckle provides auto generation ofĀ Swagger 2.0, swagger-ui integration, etc. The project takes all the pain out of getting going with Swagger as well as providing tools and hooks for using and customizing Swagger related items. The full description can be found here.
Adding Swashbuckle to the project
There are lots of ways to get a new package into an ASP.NET Core application and the following covers the NuGet UI, Package Manager Console and Project.json. Pick one of them to use.
NuGet UI
Right click on the project Swashbuckle is going to be added to, Contacts in the case of the sample code, and select Manage NuGet Packages.
Select the Browse tab, check the Include prerelease checkbox and search for Swashbuckle. Prerelease is need to get the version that works with ASP.NET Core.
Finally click the Install button and work though any confirmation dialog screens that might show.
Package manager console
From the package manager console runĀ Install-Package Swashbuckle -Pre.
Project.json
Open porject.jsonĀ and in theĀ dependenciesĀ section addĀ “Swashbuckle”: “6.0.0-beta902”.
Add and configure Swashbuckle
In theĀ ConfigureServicesĀ function of theĀ StartupĀ class add the following. I added it as the end, but placement shouldn’t matter.
services.AddSwaggerGen();
Next in theĀ ConfigureĀ function afterĀ app.UseMvcĀ add the following.
app.UseSwagger(); app.UseSwaggerUi();
The first line enable serving of the Swagger JSON endpoint and the second enables the swagger-ui.
Test it out
Running the application will now provide two new routes one or each of the items added to theĀ ConfigureĀ function above.
The first isĀ http://localhost:13322/swagger/v1/swagger.jsonĀ (your base URL may differ if not using the sample procject) and it exposes the Swagger compliant JSON.
The second URL isĀ http://localhost:13322/swagger/uiĀ and it provides a very readable view of the documented API along with examples and options to try the API out. The following as an example of what the current version outputs.
Wrapping up
Swashbuckle make it easy to add Swagger to aĀ project. I feel that it also provides a huge value for anyone trying to consume an API. It is of course not a magic bullet and communication with your API consumers about API changes will still be critical.
Microsoft’s docs has a great walk through which can be found here. It does more in-depth on customizing your setup and as far as modifying the look of the UI.
The code for this post in it’s finished state can be found here.
Pingback: Swagger and Swashbuckle with ASP.NET Core API ā Eric L. Anderson | ASP.NET Core
Great introduction, than you! Some people have had issues with AddSwaggerGen() and so on not being recognized. What has fixed this for me and others is to make sure your NuGet packages are updated for your projects. I am targeting net461.
Glad it was helpful. Thank you for the NuGet tip!