Для метода Post ниже требуются двойные кавычки JSON в теле, как показано ниже
"{}"
В противном случае, исключение
{"":["Unexpected character encountered while parsing value: {. Path '', line 1, position 1."]}
Метод PostCar ниже принимает JSON без двойных кавычек, как показано ниже,но требуется пользовательская модель вместо строкового типа.
{}
Есть ли способ объявить метод post, такой как метод Post, но публиковать html-тело без двойных кавычек?
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
// GET api/values
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
return new string[] { "value1", "value2" };
}
// POST api/values
[HttpPost]
public void Post([FromBody] string value)
{
}
[HttpPost("PostCar")]
public void PostCar([FromBody] Car car)
{
}
}
public class Car
{
public string Name { get; set; }
}
ЭтоОсобенность .NET Core сбивает с толку !!
Обновления
Мое текущее решение для избежания двойных кавычек для JSON приведено ниже:
Но требуется проверка JSON.
[HttpPost]
public void Post()
{
using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8))
{
var body = reader.ReadToEnd();
}
}
https://weblog.west -wind.com / posts / 2017 / Sep / 14 / Принятие необработанных запросов-содержимого-содержимого-в-ASPNET-Core-API-контроллерах # Чтение-Request.Body-for-Raw-Data
Опять же, есть ли лучшее решение вместо использования Request.Body, но как использовать [FromBody]?
[FromBody] со строковым параметром: для этого требуются двойные кавычки, меньше кода, нет проверки JSON?