Json Опубликовать объект в AspNetCore не работает - PullRequest
1 голос
/ 09 мая 2019
[![enter image description here][1]][1]


[1]: https://i.stack.imgur.com/nvl1G.png

[Route("api/values")]
[ApiController]
public class ValuesController : ControllerBase
{
    [Route("asd")]
    [HttpGet]
    public ActionResult<IEnumerable<string>> Get()
    {

        return new string[] { "value1", "value2" };
    }

    [Route("Test")]
    [HttpPost]
    public IActionResult Test([FromBody] Person p)
    {
        return Ok(p);
    }
}

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
}  

Я использую ядро ​​asp.net для веб-API.В данный момент занимаюсь тестированием на.Использовал почтальон для публикации объекта json в веб-интерфейсе.Но я не могу получить объект.Ниже приведено сообщение о возврате с веб-API

{
   "errors": {
    "": [
        "A non-empty request body is required."
    ]
   }  ,
   "title": "One or more validation errors occurred.",
   "status": 400,
   "traceId": "80000099-0007-fd00-b63f-84710c7967bb"
}

1 Ответ

1 голос
/ 09 мая 2019

Пожалуйста, поделитесь полезной нагрузкой, которую вы предоставляете в Почтальоне. Убедитесь, что вы добавляете полезную нагрузку в виде объекта в разделе body и устанавливаете тип контента как JSON (application / json).

Полезная нагрузка должна совпадать с полезной нагрузкой вашего объекта. В вашем случае это может быть:

{
   "FirstName": "my First Name",
   "LastName" : "my last Name",
   "Age": 28
}

Кроме того, в вашем случае [FromBody] не требуется в Asp.Net Core, поскольку он сериализуется по умолчанию для сложных типов.

https://docs.microsoft.com/en-us/aspnet/core/web-api/?view=aspnetcore-2.2

[FromBody] выводится для параметров сложного типа. Исключение из правило вывода [FromBody] - это любой сложный, встроенный тип с особое значение, такое как IFormCollection и CancellationToken. исходный код связывания игнорирует эти специальные типы.

[FromBody] не выводится для простых типов, таких как string или int. Следовательно, атрибут [FromBody] должен использоваться для простых типов когда эта функциональность необходима.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...