Я хочу проверить тело запроса JSON, чтобы предоставить унифицированный ответ об ошибке.
В настоящее время, если в теле JSON есть недопустимый символ, я получаю
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"traceId": "00-5c7b8c1fc5a3a1226dde24ce151cc9a5-889d7f82a7a1e72f-00",
"errors": {
"$": [
"'\"' is invalid after a property name. Expected a ':'. Path: $ | LineNumber: 1 | BytePositionInLine: 12."
]
}
}
Где, как выглядит мой стандартный ответ об ошибке,
{
"statusCode": 400,
"message": "Missing required fields: FIELD1",
"errorCode": "FIELDS_MISSING",
"target": "ValidateFields",
"innerError": "Somerror"
}
Как я могу вернуть проверку JSON в унифицированном объекте ответа на ошибку?
Согласно вашему описанию, я предлагаю вам попробовать метод ниже, чтобы настроить результат проверки.
Добавьте ApiBehaviorOptions, чтобы настроить ошибку недопустимого запроса.
builder.Services.Configure<ApiBehaviorOptions>(o =>
{
o.InvalidModelStateResponseFactory = actionContext =>
{
List<Error> error = actionContext.ModelState
.Where(modelError => modelError.Value.Errors.Count > 0)
.Select(modelError => new Error
{
ErrorField = modelError.Key,
ErrorDescription = modelError.Value.Errors.FirstOrDefault().ErrorMessage
}).ToList();
return new BadRequestObjectResult(error);
};
});
Класс ошибки:
public class Error
{
public string ErrorField { get; set; }
public string ErrorDescription { get; set; }
}
Результат: