Как точно определить ошибки сериализации на конечных точках Web API? - PullRequest
0 голосов
/ 04 июля 2019

Иногда у меня есть конечная точка на моем веб-интерфейсе:

[HttpPost]
public async Task Foo([FromForm] int[] a, [FromForm] int b, ...) {
  await Task.Delay(1000);
}

При вызове со стороны клиента с помощью axios:

var formData = new FormData();
formData.append('a', this.selected.map(n => n.id));
formData.append('b', this.id);
await this.axios.post('/api/v1/foo', formData);

Я получаю ошибку 400. Какие государства ни в коем случае не указывают, какое поле вызвало проблему. Есть ли способ узнать кроме проб и ошибок?

POST https://localhost:5001/api/v1/foo 400 (неверный запрос)

1 Ответ

0 голосов
/ 05 июля 2019

Для Asp.Net Core Api, если вы откроете вкладку сети веб-браузера, вы увидите ниже, который уже возвращает ожидаемый ответ об ошибке.

{
    "errors": {
        "a": [
            "The value '1,2,3' is not valid."
        ]
    },
    "title": "One or more validation errors occurred.",
    "status": 400,
    "traceId": "8000001e-0004-fe00-b63f-84710c7967bb"
}

Если вы хотите зафиксировать ошибки с помощью axios, вы можете попробовать

var formData = new FormData();
formData.append('a', "1,2,3");
formData.append('b', "1");
axios.post('/api/values/Foo', formData)
    .then(function (response) {
        console.log(response);
    })
    .catch(function (error) {
        console.log(JSON.stringify(error.response.data.errors));
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...