Ali*_*uri 1 json.net odata asp.net-core asp.net-core-webapi
在我的 .net core 3.1 Web api 项目中,我正在使用Microsoft.AspnetCore.Odata和Microsoft.AspnetCore.Mvc.NewtonsoftJson. 我的启动看起来像这样:
services.AddOData();
services.AddControllers(options =>
{
IEnumerable<ODataOutputFormatter> outputFormatters =
options.OutputFormatters.OfType<ODataOutputFormatter>()
.Where(foramtter => foramtter.SupportedMediaTypes.Count == 0);
foreach (var outputFormatter in outputFormatters)
{
outputFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/odata"));
}
}).AddNewtonsoftJson(options =>
{
options.UseCamelCasing(false);
options.SerializerSettings.ContractResolver = new DefaultContractResolver() { NamingStrategy = new CamelCaseNamingStrategy() };
});
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseEndpoints(endpoints =>
{
endpoints.MapHealthChecks("/health");
endpoints.MapControllers().RequireAuthorization();
endpoints.EnableDependencyInjection();
endpoints.Select().OrderBy().Filter();
endpoints.MapODataRoute("odata", "odata", GetEdmModel());
});
}
IEdmModel GetEdmModel()
{
var builder = new ODataConventionModelBuilder();
builder.EnableLowerCamelCase();
builder.EntitySet<Ebp>("Ebp");
return builder.GetEdmModel();
}
Run Code Online (Sandbox Code Playgroud)
当我GET使用 调用端点时{{baseUrl}}/odata/coaching/ebp/all,结果如camelCase我所料。
然而,当我引入任何$select或$filter选项进行查询时,我的回答变为PascalCase
为什么会发生这种情况?
答案就在这篇文章里。在AddNewtonSoftJson附加到服务集合的方法中,我应该将设置SerializerSettings.ContractResolver为CamelCasePropertyNamesContractResolver。
services.AddOData();
services.AddControllers(options =>
{
IEnumerable<ODataOutputFormatter> outputFormatters =
options.OutputFormatters.OfType<ODataOutputFormatter>()
.Where(foramtter => foramtter.SupportedMediaTypes.Count == 0);
foreach (var outputFormatter in outputFormatters)
{
outputFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/odata"));
}
}).AddNewtonsoftJson(options =>
{
options.UseCamelCasing(false);
options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1061 次 |
| 最近记录: |