统一消息格式 - kuiyu/RsCode GitHub Wiki
asp.net core webapi项目
1.项目Startup文件 ConfiguratureService() 添加
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc(opt =>
{
o.Filters.Add(new RsCode.AspNetCore.AppExceptionFilter());
//统一输入内容格式
o.InputFormatters.Insert(0, new RsInputFormatter());
//统一的消息返回格式
o.OutputFormatters.Insert(0, new RsOutputFormatter("yyyy-MM-dd"));
})
}
- api的消息将统一返回如下格式
{
"success":true
,"code":200
,"msg":"your custom msg"
,"targetUrl":null
,"result":"your custom result object"
}
仅对请求是/api/开头的路径有效
POST请求,服务端参数定义[FormBody]Class model
客户端要保证 header中"Content-Type":"application/json;charset=utf-8"
$.ajax({
url: '/api/password/change',
type: 'put',
data: JSON.stringify(data.field), //转字符,否则可能出现400
contentType: 'application/json', //不写可能出现415
success: function(ret) {
if (ret.success)
{
layer.msg(ret.msg, { icon: 1,time: 3000})
}
else
{
layer.msg(ret.msg, { icon: 2, time: 3000 });
}
},
error: function(err) { }
});
客户端的参数如果是json,要转成字符串后发送到服务器,例var d=JSON.stringify(data);
asp.net core mvc项目
services.AddMvc()
.AddJsonOptions(options => {
//数据格式首字母小写
options.JsonSerializerOptions.PropertyNamingPolicy =JsonNamingPolicy.CamelCase;
//数据格式原样输出
//options.JsonSerializerOptions.PropertyNamingPolicy = null;
//取消Unicode编码
options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);
//忽略空值
options.JsonSerializerOptions.IgnoreNullValues = true;
//允许额外符号
options.JsonSerializerOptions.AllowTrailingCommas = true;
//反序列化过程中属性名称是否使用不区分大小写的比较
options.JsonSerializerOptions.PropertyNameCaseInsensitive = false;
//mvc返回日期格式
options.JsonSerializerOptions.Converters.Add(new DateTimeConverter());
});