I'm new in Swashbuckl or Swagger but I've created a Web API which requires to create Documentation using Swagger from my client. I've already created but they require the API version details to be shown into the Swageer UI which I'm not so sure how to achieve.
Here is my code:
public class SwaggerConfig
{
public static void Register()
{
var thisAssembly = typeof(SwaggerConfig).Assembly;
GlobalConfiguration.Configuration
.EnableSwagger(c =>
{
c.SingleApiVersion("v1", "Demo Api");
c.IncludeXmlComments(string.Format(@"{0}\bin\WebApi.XML",
System.AppDomain.CurrentDomain.BaseDirectory));
})
.EnableSwaggerUi();
}
}
Controller Example:
/// <summary>
/// Get the Next IdKey
/// </summary>
/// <remarks>Get the Next IdKey from Dettagli Table</remarks>
/// <response code="404">Not found</response>
/// <response code="500">Internal Server Error</response>
[HttpGet]
public int GetNextIdDettagli()
{
try
{
DettagliRepo repo = new DettagliRepo();
return repo.GetNextIdDettagli();
}
catch (Exception ex)
{
throw (ex);
}
}
This is how all of the Controller actions has been made.
Here is the output of my Swagger UI:
This is the expected output from my client marked by 1,2 and 3:
I can understand from the screen shot that they want API description, title and other information to be shown but I don't know how to show them. please help me or suggest me how do I achieve that part. Thanks in advance.
Update
I've achieved 1 and 2 from the Following link
with the following code:
.EnableSwagger(c =>
{
c.RootUrl(req => GetRootUrlFromAppConfig());
c.Schemes(new[] { "http", "https" });
c.SingleApiVersion("v1", "Swashbuckle.Dummy")
.Description("A sample API for testing and prototyping Swashbuckle features")
.TermsOfService("Some terms")
.Contact(cc => cc
.Name("Some contact")
.Url("http://tempuri.org/contact")
.Email("[email protected]"))
.License(lc => lc
.Name("Some License")
.Url("http://tempuri.org/license"));
});
But still I need help for the point 3. Thanks.
Step 1: Open the User. java and add @ApiModel annotation just above the class name. Add the description about the User model. @ApiModel: It provides additional information about Swagger Models.
You can actually create a document filter and update the Tags node in the swagger document using the document filter.
See a sample document filter below:
public class DocumentFilter : IDocumentFilter
{
/// <summary>
/// This method is for applying the filter
/// </summary>
/// <param name="swaggerDoc">Swagger Document</param>
/// <param name="schemaRegistry">Schema Registry</param>
/// <param name="apiExplorer">API Explorer</param>
public void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer)
{
var methods = swaggerDoc.paths.Select(i => i.Value);
List<string> tags = new List<string>();
foreach (var method in methods)
{
if (method.delete != null)
{
tags.AddRange(method.delete.tags);
}
if (method.get != null)
{
tags.AddRange(method.get.tags);
}
if (method.put != null)
{
tags.AddRange(method.put.tags);
}
if (method.post != null)
{
tags.AddRange(method.post.tags);
}
if (method.patch != null)
{
tags.AddRange(method.patch.tags);
}
}
swaggerDoc.tags = new List<Tag>();
foreach (var tag in tags)
{
swaggerDoc.tags.Add(new Tag() { name = tag, description = "This is a group of methods for " + tag });
}
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With