Integrate Swagger in an .NET Core Web API
Introduction
When consuming a REST API, understanding its various methods can be challenging for a developer. Swagger, also known as OpenAPI, solves the problem of generating useful documentation which allows us to obtain a good quality of documentation with a minimal time cost. Also, it gives benefits such as interactive documentation, client SDK generation, and API discoverability. The .NET Core implementation Swashbuckle is very easy to use Swagger by adding a couple of NuGet packages and modifying the Startup.cs.
- Swashbuckle is an open source project for generating Swagger documents for Web APIs that are built with ASP.NET Core MVC.
- Swagger is a machine readable representation of a RESTful API that enables support for interactive documentation, client SDK generation and discoverability.
Detail
Following are the steps to integrate Swagger UI in an .NET Core Web API project.
- Create .Net Core WebAPI project or Use existing WebAPI project (use Visual Studio 2017 or 2019)
Suppose, we have created new web api project with following sets of controller methods:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
namespace SwaggerIntegration.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
// GET api/values
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
[HttpGet("{id}")]
public ActionResult<string> Get(int id)
{
return "value";
}
// POST api/values
[HttpPost]
public void Post([FromBody] string value)
{
}
// PUT api/values/5
[HttpPut("{id}")]
public void Put(int id, [FromBody] string value)
{
}
// DELETE api/values/5
[HttpDelete("{id}")]
public void Delete(int id)
{
}
}
}
- Install Swashbuckle.AspNetCore package from NuGet
We can use either Package Manager Console Or Wizard to install package.
Package Manager Console:
PM > Install-Package Swashbuckle.AspNetCore
Nuget Package Wizard: - Modify methods in Startup.cs class
Configure()
ConfigureServices()
Now, open startup.cs file, go to ConfigureServices, and AddSwaggerGen. The method will look like this.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info
{
Version = "v1",
Title = "Nice Test API",
Description = "ASP.NET Core Web API"
});
});
}After that, add the Swagger UI to the Configure method, after which it will look like this:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseMvc();
app.UseSwagger();
app.UseSwaggerUI(c => {
c.SwaggerEndpoint("/swagger/v1/swagger.json", "Test API V1");
});
}Include namespace, using Swashbuckle.AspNetCore.Swagger;
Now, all is set, just you need to change lauch setting to start appilcation with swagger:
{
"$schema": "http://json.schemastore.org/launchsettings.json",
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:53558",
"sslPort": 44343
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "swagger/",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"SwaggerIntegration": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "swagger/",
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
Now, run the application and you can see following swagger doc:
Watch video here: https://youtu.be/oUkj6eL3pMY
Conclusion
It's very easy to integrate swagger doc in .NET Core REST APIs. Hope, this article will help developer during integration.
Smith
05-Oct-2019 at 21:48