Skip to content

Commit 329829a

Browse files
further improvements
1 parent c05cfd4 commit 329829a

File tree

3 files changed

+29
-35
lines changed

3 files changed

+29
-35
lines changed

SampleWebApiAspNetCore/Controllers/v1/FoodsController.cs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212

1313
namespace SampleWebApiAspNetCore.v1.Controllers
1414
{
15+
[ApiController]
1516
[ApiVersion("1.0")]
1617
[Route("api/v{version:apiVersion}/[controller]")]
1718
//[Route("api/[controller]")]
18-
[ApiController]
1919
public class FoodsController : ControllerBase
2020
{
2121
private readonly IFoodRepository _foodRepository;
@@ -203,13 +203,12 @@ private List<LinkDto> CreateLinksForCollection(QueryParameters queryParameters,
203203
var links = new List<LinkDto>();
204204

205205
// self
206-
links.Add(
207-
new LinkDto(_urlHelper.Link(nameof(GetAllFoods), new
208-
{
209-
pagecount = queryParameters.PageCount,
210-
page = queryParameters.Page,
211-
orderby = queryParameters.OrderBy
212-
}), "self", "GET"));
206+
links.Add(new LinkDto(_urlHelper.Link(nameof(GetAllFoods), new
207+
{
208+
pagecount = queryParameters.PageCount,
209+
page = queryParameters.Page,
210+
orderby = queryParameters.OrderBy
211+
}), "self", "GET"));
213212

214213
links.Add(new LinkDto(_urlHelper.Link(nameof(GetAllFoods), new
215214
{

SampleWebApiAspNetCore/Controllers/v2/FoodsController.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace SampleWebApiAspNetCore.v2.Controllers
44
{
5+
[ApiController]
56
[ApiVersion("2.0")]
67
[Route("api/v{version:apiVersion}/[controller]")]
78
public class FoodsController : ControllerBase

SampleWebApiAspNetCore/Startup.cs

Lines changed: 21 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,11 @@ public void ConfigureServices(IServiceCollection services)
5151
services.AddScoped<IFoodRepository, EfFoodRepository>();
5252
services.AddRouting(options => options.LowercaseUrls = true);
5353
services.AddSingleton<IActionContextAccessor, ActionContextAccessor>();
54-
services.AddScoped<IUrlHelper>(implementationFactory =>
54+
services.AddScoped<IUrlHelper>(x =>
5555
{
56-
var actionContext = implementationFactory.GetService<IActionContextAccessor>().ActionContext;
57-
return new UrlHelper(actionContext);
56+
var actionContext = x.GetRequiredService<IActionContextAccessor>().ActionContext;
57+
var factory = x.GetRequiredService<IUrlHelperFactory>();
58+
return factory.GetUrlHelper(actionContext);
5859
});
5960

6061

@@ -68,8 +69,23 @@ public void ConfigureServices(IServiceCollection services)
6869
});
6970

7071
services.AddVersionedApiExplorer(o => o.GroupNameFormat = "'v'VVV");
71-
services.AddTransient<IConfigureOptions<SwaggerGenOptions>, ConfigureSwaggerOptions>();
72-
services.AddSwaggerGen();
72+
services.AddSwaggerGen(
73+
options =>
74+
{
75+
var provider = services.BuildServiceProvider()
76+
.GetRequiredService<IApiVersionDescriptionProvider>();
77+
78+
foreach (var description in provider.ApiVersionDescriptions)
79+
{
80+
options.SwaggerDoc(
81+
description.GroupName,
82+
new Info()
83+
{
84+
Title = $"Sample API {description.ApiVersion}",
85+
Version = description.ApiVersion.ToString()
86+
});
87+
}
88+
});
7389
}
7490

7591
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
@@ -126,26 +142,4 @@ public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory,
126142
});
127143
}
128144
}
129-
130-
public class ConfigureSwaggerOptions : IConfigureOptions<SwaggerGenOptions>
131-
{
132-
readonly IApiVersionDescriptionProvider provider;
133-
134-
public ConfigureSwaggerOptions(IApiVersionDescriptionProvider provider) =>
135-
this.provider = provider;
136-
137-
public void Configure(SwaggerGenOptions options)
138-
{
139-
foreach (var description in provider.ApiVersionDescriptions)
140-
{
141-
options.SwaggerDoc(
142-
description.GroupName,
143-
new Info()
144-
{
145-
Title = $"Sample API {description.ApiVersion}",
146-
Version = description.ApiVersion.ToString(),
147-
});
148-
}
149-
}
150-
}
151145
}

0 commit comments

Comments
 (0)