Generating Documentation For Web API 2.0

This article focuses on how to generate the documentation to the user of a Web API that gives the feel similar to WSDL.

In my previous article, we got the gist of Web APIs, but we didn't do anything on the documentation part. So in this article, we will cover the documentation of our Web API which will help users who are using Swagger.

What is Swagger?

Swagger is a standard which is used to define the API so that endpoints can be found and discovered easily with the help of small documentation along with the user interface. If it is clear what the API is doing, one can easily consume these APIs. It is similar to WSDL for Web Servcies.

How to get Swagger?

Swagger is an open source library with the name SwashBuckle and can be taken by any means of importing package. Let’s have a look at how to get it from NuGet,

 Swagger

What code changes are required?

First of all, we have to go and register the service for Swagger:

  1. public void ConfigureServices(IServiceCollection services)  
  2.         {  
  3.             services.AddMvc();  
  4.             services.AddSwaggerGen(options =>   
  5.             {  
  6.                 options.SwaggerDoc("Version 1"new Swashbuckle.AspNetCore.Swagger.Info { Title = "Conference Planner", Description = "This holds methods to perform CRUD operation using in-memory database." });  
  7.                 });  
  8.             services.AddDbContext<ApplicationDbContext>(context => { context.UseInMemoryDatabase("ConferencePlanner"); });  
  9.         }  }
Next, we must do configuration related changes by enabling the user interface:
  1. public void Configure(IApplicationBuilder app, IHostingEnvironment env)  
  2.         {  
  3.             if (env.IsDevelopment())  
  4.             {  
  5.                 app.UseDeveloperExceptionPage();  
  6.             }  
  7.   
  8.             app.UseSwagger();  
  9.             app.UseSwaggerUI(swag =>  
  10.             {  
  11.                 swag.SwaggerEndpoint("/swagger/version1/swagger.json""Conference Planner APIs");  
  12.             });  
  13.             app.UseMvc();  
  14.         }  

We are almost there. Now, quickly build and run the application with a URL as http://localhost:3394/swagger/Version1/swagger.json. Please note, for you, it can be a different port number. Once the page is loaded, you can see the generated JSON as:

JSON
 
The above JSON contains all the information which is required for any consumer. 

Last but not least, the UI part. To view the UI, the URL has to be changed slightly as http://localhost:3394/swagger/

UI Part

And we are done with the SwashBuckle, which is an implementation of Swagger. Happy learning.