如何解决如何使用Swashbuckle和.net core记录身体参数
我们正在使用Swashbuckle.AspNetCore版本=“ 5.6.3”为.Net core 3.1 Web服务生成swagger(v2)文档。 在.Net core中,有两种指定主体参数的方法。
1. public void someActionMethod (Guid id,[FromBody] item){...}
2. public void SomeActionMethod (Guid id) {
var item = Request.Body;
}
我们正在使用APIController为主体参数使用第二个选项。在这种情况下,swashbuckle无法推断所需的body参数,因此文档中将其丢失。 任何人都可以指出是否有一种无需使用[FromBody]即可指定和生成body参数文档的方法吗? 它是现有的API,因此我想避免仅出于文档目的而更改签名。
解决方法
请找到dotnet core 3.1 @ https://github.com/domaindrivendev/Swashbuckle.AspNetCore的解决方案 如果您配置newtonsoft json格式化程序,则api项目应安装Swashbuckle.AspNetCore.Newtonsoft
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers().AddNewtonsoftJson(); //Configure Newtonsoft json formatter
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("test",new OpenApiInfo { Title = "test API Service",Version = "v2.0.1"});
c.AddSecurityDefinition("oauth2",new OpenApiSecurityScheme
{
Description = "Access Token Authentication. Example: \"bearer {token}\"",In = ParameterLocation.Header,Name = "Authorization",Type = SecuritySchemeType.ApiKey
});
c.OperationFilter<SecurityRequirementsOperationFilter>();
});
services.AddSwaggerGenNewtonsoftSupport(); //Add swagger support for newtonsoft json formatter
}
public void Configure(IApplicationBuilder app,IWebHostEnvironment e)
{
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/test/swagger.json","Test API v1");
// c.DefaultModelsExpandDepth(-1);
// c.DocExpansion(DocExpansion.None);
// c.EnableFilter();
// c.EnableDeepLinking();
});
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。