11
11
using Microsoft . Extensions . Configuration ;
12
12
using Microsoft . Extensions . DependencyInjection ;
13
13
using Microsoft . Extensions . Logging ;
14
+ using Microsoft . Extensions . Options ;
14
15
using SampleWebApiAspNetCore . Dtos ;
15
16
using SampleWebApiAspNetCore . Entities ;
16
17
using SampleWebApiAspNetCore . Repositories ;
17
18
using SampleWebApiAspNetCore . Services ;
18
19
using Swashbuckle . AspNetCore . Swagger ;
20
+ using Swashbuckle . AspNetCore . SwaggerGen ;
19
21
20
22
namespace WebApplication11
21
23
{
@@ -55,40 +57,25 @@ public void ConfigureServices(IServiceCollection services)
55
57
return new UrlHelper ( actionContext ) ;
56
58
} ) ;
57
59
58
- services . AddMvcCore ( ) . AddVersionedApiExplorer ( o => o . GroupNameFormat = "'v'VVV" ) ;
59
- services . AddMvc ( ) . SetCompatibilityVersion ( CompatibilityVersion . Version_2_1 ) ;
60
+
61
+ services . AddMvc ( ) . SetCompatibilityVersion ( CompatibilityVersion . Version_2_2 ) ;
60
62
services . AddApiVersioning ( config =>
61
63
{
62
64
config . ReportApiVersions = true ;
63
65
config . AssumeDefaultVersionWhenUnspecified = true ;
64
66
config . DefaultApiVersion = new ApiVersion ( 1 , 0 ) ;
65
67
config . ApiVersionReader = new HeaderApiVersionReader ( "api-version" ) ;
66
68
} ) ;
67
- services . AddSwaggerGen (
68
- options =>
69
- {
70
- var provider = services . BuildServiceProvider ( )
71
- . GetRequiredService < IApiVersionDescriptionProvider > ( ) ;
72
69
73
- foreach ( var description in provider . ApiVersionDescriptions )
74
- {
75
- options . SwaggerDoc (
76
- description . GroupName ,
77
- new Info ( )
78
- {
79
- Title = $ "Sample API { description . ApiVersion } ",
80
- Version = description . ApiVersion . ToString ( )
81
- } ) ;
82
- }
83
- } ) ;
70
+ services . AddVersionedApiExplorer ( o => o . GroupNameFormat = "'v'VVV" ) ;
71
+ services . AddTransient < IConfigureOptions < SwaggerGenOptions > , ConfigureSwaggerOptions > ( ) ;
72
+ services . AddSwaggerGen ( ) ;
84
73
}
85
74
86
75
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
87
76
public void Configure ( IApplicationBuilder app , ILoggerFactory loggerFactory ,
88
77
IHostingEnvironment env , IApiVersionDescriptionProvider provider )
89
78
{
90
- loggerFactory . AddConsole ( ) ;
91
-
92
79
if ( env . IsDevelopment ( ) )
93
80
{
94
81
app . UseDeveloperExceptionPage ( ) ;
@@ -114,10 +101,18 @@ public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory,
114
101
} ) ;
115
102
}
116
103
117
- //app.AddSeedData();
118
-
119
104
app . UseHttpsRedirection ( ) ;
120
105
106
+ app . UseCors ( "AllowAllOrigins" ) ;
107
+ AutoMapper . Mapper . Initialize ( mapper =>
108
+ {
109
+ mapper . CreateMap < FoodItem , FoodItemDto > ( ) . ReverseMap ( ) ;
110
+ mapper . CreateMap < FoodItem , FoodUpdateDto > ( ) . ReverseMap ( ) ;
111
+ mapper . CreateMap < FoodItem , FoodCreateDto > ( ) . ReverseMap ( ) ;
112
+ } ) ;
113
+
114
+ app . UseMvc ( ) ;
115
+
121
116
app . UseSwagger ( ) ;
122
117
app . UseSwaggerUI (
123
118
options =>
@@ -129,16 +124,28 @@ public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory,
129
124
description . GroupName . ToUpperInvariant ( ) ) ;
130
125
}
131
126
} ) ;
127
+ }
128
+ }
132
129
133
- app . UseCors ( "AllowAllOrigins" ) ;
134
- AutoMapper . Mapper . Initialize ( mapper =>
135
- {
136
- mapper . CreateMap < FoodItem , FoodItemDto > ( ) . ReverseMap ( ) ;
137
- mapper . CreateMap < FoodItem , FoodUpdateDto > ( ) . ReverseMap ( ) ;
138
- mapper . CreateMap < FoodItem , FoodCreateDto > ( ) . ReverseMap ( ) ;
139
- } ) ;
130
+ public class ConfigureSwaggerOptions : IConfigureOptions < SwaggerGenOptions >
131
+ {
132
+ readonly IApiVersionDescriptionProvider provider ;
140
133
141
- app . UseMvc ( ) ;
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
+ }
142
149
}
143
150
}
144
151
}
0 commit comments