In this post I want to talk about a product that could help us to produce documentation about the Web API services implemented in our application.
Swagger is a popular framework that once installed in an ASP.NET application is able to produce documentation about all the Web API implemented in the project.
Furthermore it give us a lot of flexibility and is possible to add some custom filters in order to change the standard behaviours; for example add the OAuth authentication management for the protected applications.
So let’s go to view the steps necessaries to install and configure this framework.
Configuration
The first step is install the package in our project and we can do that with nuget:
Install-Package Swashbuckle -Version 5.6.0
Now we need to add the Swagger configuration in the startup.cs file:
config.EnableSwagger(c => { c.SingleApiVersion("v1", "BaseSPA.Web"); c.OperationFilter<SwaggerFilter>(); c.PrettyPrint(); c.IgnoreObsoleteActions(); }).EnableSwaggerUi();
In the configuration we define the description of the project, we says that we want json in prettify format and we want to ignore obsolete actions.
Furthermore we register a SwaggerFilter, that is a custom filter used to manage the OAuth authentication.
This is the SwaggerFilter implementation:
public class SwaggerFilter: IOperationFilter { public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription) { var toBeAuthorize = apiDescription.GetControllerAndActionAttributes<AuthorizeAttribute>().Any(); if (toBeAuthorize) { if (operation.parameters == null) operation.parameters = new List<Parameter>(); operation.parameters.Add(new Parameter() { name = "Authorization", @in = "header", description = "bearer token", required = true, type = "string" }); } } }
First of all we need to implement the IOperationFilter interface with the Apply method.
In this method we check the actions protected with the Authorize attribute; for these, we add a new Authorization parameter that we’ll be showed in the Swagger UI and will be used to set the bearer token.
Test Web API
After compiling the project, we can access the url of the application and append the term swagger at the end of that, like this:
http://localhost/swagger
This is what will be showed:
If we open one of the actions available, we notice the Authorization attribute that we have configure above:
Now what we need is the bearer token to send to the action and we can retrieve it with Postman; we have to send a post request to the token endpoint configured in the application like this:
I send a request with my username, password and grant_type keys and I specify the content type as x-www-form-urlencoded as well.
The response contains the access_token and I can copy it in the field in the swagger UI:
That’s all, by sending the request, the application recognize me and it send me the response.
You can find the source code here.
Leave a Reply