POST-запрос от Почтальона не проходит проверку модели - PullRequest
0 голосов
/ 02 апреля 2019

Внутри моей программы ASP.NET WebApi у меня есть модель Author:

public class Author
{
    public int Id { get; set; }
    [Required] public string Name { get; set; }
}

У меня также есть AuthorsController с методом PostAuthor(Author author):

// POST: api/Authors
[ResponseType(typeof(Author))]
public async Task<IHttpActionResult> PostAuthor(Author author)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    // etc.
}

Когда я посылаю программный запрос POST внутри моих модульных тестов, возвращается HTTP Status Code 201 Created:

enter image description here

Однако, когда я отправляю POST запрос с использованием Почтальон , вместо этого я получаю HTTP Status Code 400 Bad Request:

enter image description here

Как вы можете видеть, когда я отправляю POST запрос с использованием Postman, аргумент, переданный методу PostAuthor(Author author), равен null, и в результате проверка модели завершится неудачно:

enter image description here

Что я должен сделать, чтобы обеспечить обработку POST запросов от Postman?

Ответы [ 3 ]

1 голос
/ 02 апреля 2019

Пара изменений: определите его как HttpPost и используйте FromBody как

// POST: api/Authors
[HttpPost]
[ResponseType(typeof(Author))]
public async Task<IHttpActionResult> PostAuthor([FromBody] Author author)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    // etc.
}
1 голос
/ 02 апреля 2019

Заменить = на: в теле почтальона, в конце концов, это JSON.

0 голосов
/ 02 апреля 2019

Если вы отправляете application / json, а ваш API ожидает INBOUND JSON, попробуйте отправить в формате JSON, что-то вроде

{
"Id":"6",
"Name":"P.G. Wodehouse"
}
...