Asp.net core 带有Swagger的ASP.NET核心Web API生成错误的属性名称
所以我用API建立了一个新的解决方案。正如您在以下邮递员请求中所看到的,此API正在按预期工作:Asp.net core 带有Swagger的ASP.NET核心Web API生成错误的属性名称,asp.net-core,swagger,asp.net-core-webapi,ef-core-2.0,Asp.net Core,Swagger,Asp.net Core Webapi,Ef Core 2.0,所以我用API建立了一个新的解决方案。正如您在以下邮递员请求中所看到的,此API正在按预期工作: { "Id": 1, "Name": "Samsung" } 斯威格产生了以下代码: { "id": 0, "name": "string" } 这些代码片段显示了我的模型中的一个品牌 如何修复它,使Swagger获得第一个代码段中所示的属性名称 以下是我配置API和模型的方式: 配置服务: public void ConfigureServices(IServiceCollection
{
"Id": 1,
"Name": "Samsung"
}
斯威格产生了以下代码:
{
"id": 0,
"name": "string"
}
这些代码片段显示了我的模型中的一个品牌
如何修复它,使Swagger获得第一个代码段中所示的属性名称
以下是我配置API和模型的方式:
配置服务:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddMvc().AddJsonOptions(o =>
{
o.JsonSerializerOptions.PropertyNamingPolicy = null;
});
services.AddDbContext<PhoneCalculatorContext>(options => options.UseSqlServer(
Configuration["ConnectionStrings:DefaultConnection"]));
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
});
}
型号:
public class Brand
{
public int Id { get; set; }
public string Name { get; set; }
}
您可以自定义
ISchemaFilter
以显示自定义示例值,如下所示:
1.自定义ISchemaFilter
public class AddSchemaExamples : ISchemaFilter
{
public void Apply(OpenApiSchema schema, SchemaFilterContext context)
{
if (context.ApiModel.Type == typeof(Brand))
{
// TODO: Set the example.
schema.Example = new OpenApiObject
{
["Id"] = new OpenApiInteger(1),
["Name"] = new OpenApiString("Samsung")
};
}
}
}
2.RegsterISchemaFilter
:
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
c.SchemaFilter<AddSchemaExamples>();
});
services.AddSwaggerGen(c=>
{
c、 SwaggerDoc(“v1”,新的openapinfo{Title=“myapi”,Version=“v1”});
c、 SchemaFilter是小写?这是dotnet中现在与rest标准一致的默认设置扫描您添加一个打印,其中swagger显示:@saj我不知道用小写写给定数据是rest标准,因此我猜整个问题与小写无关,我应该只使用小写?如果我的答案是It’这很有帮助,可以吗?
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
c.SchemaFilter<AddSchemaExamples>();
});