Хотя автоматический ответ 400 полезен, я не хочу отправлять ошибки проверки клиенту.
Это тело ответа:
{
"errors": {
"username": [
"'username' must not be empty."
],
...more errors
},
"title": "One or more validation errors occurred",
"status": 400,
"traceId": "xxx:yyy"
}
Но я хочу по умолчанию, без ошибок:
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "Bad Request",
"status": 400,
"traceId": "xxx:yyy"
}
Я думал, что все, что мне нужно было сделать, это установить
options.SuppressUseValidationProblemDetailsForInvalidModelStateResponses = true;
... но это ничего не дает.
Я не хочу отключать эту функцию, я просто хочу подавить ошибки проверки.Как мне это сделать?
Кстати, я использую обходной путь, создавая тело ответа вручную, но я бы предпочел избежать этого:
services.Configure<ApiBehaviorOptions>(apiBehaviorOptions => {
apiBehaviorOptions.InvalidModelStateResponseFactory = actionContext => {
var pd = new ProblemDetails();
pd.Type = apiBehaviorOptions.ClientErrorMapping[400].Link;
pd.Title = apiBehaviorOptions.ClientErrorMapping[400].Title;
pd.Status = 400;
pd.Extensions.Add("traceId", actionContext.HttpContext.TraceIdentifier);
return new BadRequestObjectResult(pd);
};
});