2 回答
TA贡献1804条经验 获得超7个赞
尝试使用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; }
}
TA贡献1796条经验 获得超4个赞
要根据您的用例添加自定义响应,请在启动中添加以下代码
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”,消息:“处理错误”}
您可以根据需要自定义响应对象。
- 2 回答
- 0 关注
- 232 浏览
添加回答
举报