I am working on a project which I named as "main-project". I have at least 10 different small project in there and this project will probably grow. I have just one swagger for all these projects because all these projects use just one dotnet core web application for generalization purpose.
For example, let's say I have project named SchoolJob and project named HospitalJob. SchoolJob has three different endpoints named GetStudents, TakeStudents, GetPayment and HostpitalJob has two endpoint named GetDoctors and GetNurses. These two different project will be seen in one swagger UI like that:
- ../schooljob/getstudents
- ../schooljob/takestudents
- ../schooljob/getpayment
- ../hospitaljob/getdoctors
- ../hospitaljob/getnurses
What I want to do is setting multiple different swagger page in one dotnet core web project or grouping one swagger so that they will be seen on different page / or on the same page but not the same time.
../mainproject/swagger1/index.html or mainproject/swagger/schooljob UI should be like that:
- ../schooljob/getstudents
- ../schooljob/takestudents
- ../schooljob/getpayment
../mainproject/swagger2/index.html or mainproject/swagger/hospitaljob UI should be like that
- ../hospitaljob/getdoctors
- ../hospitaljob/getnurses
// Startup.cs
public void ConfigureServices(IServiceCollection services)
{
c.SwaggerDoc("schooljob", new OpenApiInfo
{
Version = "schooljob",
Title = "School Job"
});
c.SwaggerDoc("hospitaljob", new OpenApiInfo
{
Version = "hospitaljob",
Title = "Hospital Job"
});
// c.AddSecurityDefinition... and other swagger configurations
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IServiceProvider serviceProvider)
{
app.UseSwagger(c =>
{
c.RouteTemplate = "mainproject/swagger/{documentname}/swagger.json";
});
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/mainproject/swagger/schooljob/swagger.json", "School Job");
c.SwaggerEndpoint("/mainproject/swagger/hospitaljob/swagger.json", "Hospital Job");
c.RoutePrefix = "mainproject/swagger";
/c second prefix how?
});
}
// SchoolController.cs
[HttpPost("schooljob/getstudents")]
[ApiExplorerSettings(GroupName = "schooljob")]
public JsonResult GetStudents([FromBody]OnaySayfasiId onaySayfasi)
{ ... }
// HospitalController.cs
[HttpPost("hospitaljob/getdoctors")]
[ApiExplorerSettings(GroupName = "hospitaljob")]
public JsonResult GetDoctors([FromBody]OnaySayfasiId onaySayfasi)
{ ... }
By the way, I tried using grouping by Api Version but I saw all these endpoints again. Is there any method for doing this?