首先,这在Swashbuckle.AspNetCore v4中运行良好。因此,给定这个模型和端点;
public class TestRequest
{
public string test1 { get; set; }
public string test2;
}
[HttpPost]
public void Post([FromBody] TestRequest value)
{
}Swagger只显示;
{
"test1": "string"
}作为示例TestRequest值。
这种行为现在是有意的吗?有没有办法通过设置或过滤器来改变这一点?我有一大堆只使用字段的导入服务。(由dotnet-svcutil生成,这很常见)
发布于 2020-01-12 01:22:30
好吧,根据@flyog57的建议,我自己解决了这个问题,我发现新的Swashbuckle.AspNetCore使用的是MS json.net而不是Newtonsoft。
因此,在https://github.com/domaindrivendev/Swashbuckle.AspNetCore上阅读git自述文件第十次
我发现有一种方法可以将json序列化程序恢复到Newtonsoft。首先(从5.0.0-rc5版本开始)安装此包;
Install-Package Swashbuckle.AspNetCore.Newtonsoft -Version 5.0.0-rc5然后在Start.ConfigureServices中告诉Swashbuckle使用;
services.AddSwaggerGenNewtonsoftSupport();现在你会发现所有这些公共的“字段”已经重新出现在你的swagger页面中了。
更新:.Net 5+在JsonSerializerOptions类中有一个"IncludeFields“选项。
现在太简单了。
https://stackoverflow.com/questions/59690601
复制相似问题