Я пытался создать простой API, мне удается заставить Get
работать нормально, но всякий раз, когда я пытаюсь работать с Post
или Put
, я не могу заставить его работать.
Я пытаюсь опубликовать / поместить JSON и получить его в виде строки в моем контроллере.
Я использую Почтальон и Бессонницу для тестирования (я уточнил, что я включил проверку SSL для обоих, так как я запускаюсь в локальной сети) ).
Вот мой контроллер:
[Route("backoffice/[controller]")]
[ApiController]
public class AddQuestionController : ControllerBase
{
private IQuestionRepository _questionRepository;
public AddQuestionController(IQuestionRepository questionRepository)
{
_questionRepository = questionRepository ?? throw new ArgumentNullException(nameof(questionRepository));
}
[ProducesResponseType((int)System.Net.HttpStatusCode.OK)]
[HttpPost]
public async Task<ActionResult> AddQuestion([FromBody] string question)
{
Question q = JsonConvert.DeserializeObject<Question>(question);
await Task.Run(() => _questionRepository.InsertOne(q));
return Ok();
}
}
![postman](https://i.stack.imgur.com/50xAg.png)
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"traceId": "|a0b79872-4e41e975d19e251e.",
"errors": {
"$": [
"The JSON value could not be converted to System.String. Path: $ | LineNumber: 0 | BytePositionInLine: 1."
]
}
}
Итак, я подумал, что это потому, что формат Json
в почтальоне , Но затем я попробовал формат text
, и это произошло:
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.13",
"title": "Unsupported Media Type",
"status": 415,
"traceId": "|a0b79873-4e41e975d19e251e."
}
И каждый раз, когда он даже не достигает первой строки моего контроллера. Может кто-нибудь сказать мне, что я здесь не так сделал? Это мой контроллер? Это мой способ использования Почтальона?