|
1 | | -using Microsoft.AspNetCore.Hosting; |
| 1 | +using Microsoft.AspNetCore.Builder; |
| 2 | +using Microsoft.Extensions.DependencyInjection; |
2 | 3 | using Microsoft.Extensions.Hosting; |
3 | 4 |
|
4 | | -namespace SimpleWebApplication; |
| 5 | +var builder = WebApplication.CreateBuilder(args); |
5 | 6 |
|
6 | | -public class Program |
| 7 | +builder.Services.AddControllers(); |
| 8 | +builder.Services.AddOpenApi(); |
| 9 | + |
| 10 | +//自动包装ActionResult |
| 11 | +builder.Services.AddResponseAutoWrapper(options => |
7 | 12 | { |
8 | | - #region Public 方法 |
| 13 | + //配置 |
| 14 | + //options.ActionNoWrapPredicate //Action的筛选委托,默认会过滤掉标记了NoResponseWrapAttribute的方法 |
| 15 | + //options.DisableOpenAPISupport //禁用OpenAPI支持,Swagger将不会显示包装后的格式,也会解除响应类型必须为object泛型的限制 |
| 16 | + //options.HandleAuthorizationResult //处理授权结果(可能无效,需要自行测试) |
| 17 | + //options.HandleInvalidModelState //处理无效模型状态 |
| 18 | + //options.RewriteStatusCode = null; //包装时不覆写非200的HTTP状态码 |
| 19 | +}); |
9 | 20 |
|
10 | | - public static IHostBuilder CreateHostBuilder(string[] args) => |
11 | | - Host.CreateDefaultBuilder(args) |
12 | | - .ConfigureWebHostDefaults(webBuilder => |
13 | | - { |
14 | | - webBuilder.UseStartup<Startup>(); |
15 | | - }); |
| 21 | +var app = builder.Build(); |
16 | 22 |
|
17 | | - public static void Main(string[] args) |
18 | | - { |
19 | | - CreateHostBuilder(args).Build().Run(); |
20 | | - } |
| 23 | +//捕获异常、非200状态码的请求,包装响应 |
| 24 | +app.UseResponseAutoWrapper(options => |
| 25 | +{ |
| 26 | + //配置 |
| 27 | + //options.CatchExceptions 是否捕获异常 |
| 28 | + //options.ThrowCaughtExceptions 捕获到异常处理结束后,是否再将异常抛出 |
| 29 | + //options.DefaultOutputFormatterSelector 默认输出格式化器选择委托,选择在请求中无 Accept 时,用于格式化响应的 IOutputFormatter |
| 30 | +}); |
21 | 31 |
|
22 | | - #endregion Public 方法 |
| 32 | +if (app.Environment.IsDevelopment()) |
| 33 | +{ |
| 34 | + app.MapOpenApi(); |
| 35 | + app.MapSwaggerUI(); |
23 | 36 | } |
| 37 | + |
| 38 | +app.UseRouting(); |
| 39 | + |
| 40 | +app.UseAuthorization(); |
| 41 | + |
| 42 | +app.MapControllers(); |
| 43 | + |
| 44 | +app.Run(); |
0 commit comments