当由于数据类型不匹配而与function indicatorStart(text) {
const $loader = $($.parseHTML(`<div id="loader" class="fade show">
<div id="loader-message" role="alert">${text}</div>
</div>`));
$('.page-content').append($loader);
}
function indicatorStop() {
$('#loader').remove();
}
的模型绑定失败时,我想给出自定义响应。
示例:当有人尝试将我的API中的API
绑定到string
参数时,我得到以下响应。
GUID
相反,我想说,
处理错误
答案 0 :(得分:0)
参考此post,要根据您的用例添加自定义响应,请在启动
中添加以下代码services.Configure<ApiBehaviorOptions>(o =>
{
o.InvalidModelStateResponseFactory = actionContext =>
new ResponseObject("403", "processing error");
});
ResponseObject 是自定义类的地方
class ResponseObject{
public string Status;
public string Message;
ResponseObject(string Status, string Message){
this.Status = Status;
this.Message= Message;
}
}
当模型绑定失败时,api将返回这样的响应
{状态:“ 403”,消息:“处理错误”}
您可以根据需要自定义响应对象。
答案 1 :(得分:0)
尝试使用FormatOutput
方法自定义BadRequest响应,如下所示:
services.AddMvc()
.ConfigureApiBehaviorOptions(options =>
{
options.InvalidModelStateResponseFactory = actionContext =>
{
return new BadRequestObjectResult(FormatOutput(actionContext.ModelState));
};
});
根据自己的想法自定义FormatOutput
方法。
public List<Base> FormatOutput(ModelStateDictionary input)
{
List<Base> baseResult = new List<Base>();
foreach (var modelStateKey in input.Keys)
{
var modelStateVal = input[modelStateKey];
foreach (ModelError error in modelStateVal.Errors)
{
Base basedata = new Base();
basedata.Status = StatusCodes.Status400BadRequest;
basedata.Field = modelStateKey;
basedata.Message =error.ErrorMessage; // set the message you want
baseResult.Add(basedata);
}
}
return baseResult;
}
public class Base
{
public int Status { get; set; }
public string Field { get; set; }
public string Message { get; set; }
}