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 關注
- 295 瀏覽
添加回答
舉報