项目场景:
根据接口文档,开发restful风格接口,通过测试工具测试接口,发现返回的obj属性变为全小写,与接口文档不符。
问题描述:
例如:接口返回的实体类型,定义为全大写,通过接口返回时变为全小写
接口定义与测试:
//返回实体格式:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Test.Model
{
public class MesResponse
{
public string STATE { get; set; }
public string MESSAGE { get; set; }
public string RESULT { get; set; }
public List<Dic> RINFO { get; set; }
}
public class Dic
{
public string KEY { get; set; }
public string VALUE { get; set; }
}
}
//接口定义
using Microsoft.AspNetCore.Mvc;
namespace MyCode.Controllers.TestCloud
{
/// <summary>
/// 测试
/// </summary>
[Route("test")]
public class TestController
{
/// <summary>
/// test
/// /system/dept/list
/// </summary>
/// <returns></returns>
[HttpPost("check")]
public MesResponse CheckDrop([FromBody] MesCheckRequest mesCheckRequest)
{
MesResponse mesResponse = new MesResponse();
mesResponse.STATE = "S";
mesResponse.MESSAGE = "Success";
mesResponse.RESULT = "OK";
mesResponse.RINFO = new List<Dic>();
return mesResponse;
}
}
}
测试结果
解决方案:
在接口服务在Program.cs或Startup.cs处,增加:
options.JsonSerializerOptions.PropertyNamingPolicy = null;
builder.Services.AddMvc(options =>
{
options.Filters.Add(typeof(GlobalActionMonitor));//全局注册
})
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.PropertyNamingPolicy = null;//增加这行代码,
options.JsonSerializerOptions.Converters.Add(new JsonConverterUtil.DateTimeConverter());
options.JsonSerializerOptions.Converters.Add(new JsonConverterUtil.DateTimeNullConverter());
});
结果: