Добрый день!
Хочуразобраться с web api в dotnet, в качестве примера делаю простой блог в MVC с комментариями, которые подгружаются и отправляются через веб апи.
Вот какая трудность: мой контроллер не желает принимать json из js запроса, и, в зависимости от типа аргумента контроллера, я получаю разные ошибки в консоли браузера: 500, 400 и 415.
Если не в браузере, то получаю null в аргументе, обычно, если аргумент принимает string. Подскажите, в какую сторону копать?
Модель:
public class CommentModel
{
public int PostId;
public string AuthorName { get; set; }
public string CommentContent { get; set; }
}
Контроллер и методы, которые я по очереди использовал:
[ApiController]
[Route("[controller]")]
public class CommentsApiController : ControllerBase
{
[HttpPost]
public async Task<string> Post(string model){...}
[HttpPost]
public async Task<string> Post(CommentModel model){...}
[HttpPost]
public async Task<string> Post(JObject model){...}
[HttpPost]
public async Task<string> Post(dynamic model){...}
}
Также, я добавлял к аргументам атрибуты [FromForm], [FromServices], [FromBody] и т.д., всё то же самое.
JS:
const url = '/CommentsApi';
const comment = function () {
var data = {
PostId: document.getElementById("PostId").innerText,
AuthorName: document.getElementById("AuthorName").value,
CommentContent: document.getElementById("CommentContent").value
}
console.log(data);
return data;
};
async function postComment() {
await fetch(url, {
method: "POST",
headers: { 'Content-type': 'application/json' },
body: comment()
}).then(r => r.json()).then(res => {
if (res) {
console.log(res);
}
else {
console.log("Fail");
}
});
};
Спасибо!