Unsupported media type 415 при отправке fetch запроса в ApiController

Фетч возвращает 415, при этом подозрительно быстро и без срабатывания брекпоинтов даже в начале метода. У меня есть ApiController

[Route("api")]
[ApiController]
public class SiteApiController : ControllerBase
{
    // 
}

Есть апи метод (два нижних атрибута уже потом добавил после гуглений)

[HttpPost("find")]
[AllowAnonymous]
[Consumes("application/json")]
public HttpResponseMessage Find([FromBody] JsonElement search)
{
    // тут код, но с фетчем не срабатывает даже брекпоминт на первой строчке
}

Есть JS с фетчем в разметке

const req = {
                method: "POST",
                headers: {
                    "Accept": "application/json, text/plain",
                },
                body: JSON.stringify(`{'search':'${text}'}`)
            };
            fetch("/api/find", req)
                .then(res => {
                    console.log("then -> " + res.text());
                    return res.json();
                })
                .then(json => {
                    console.log("then -> " + json);
                })
                .catch(err => {
                    console.log(err);
                });
        }

Сам Program

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");
app.MapControllerRoute(
    name: "api",
    pattern: "api/{action}");

Самое смешное. что через PostMan все отправляется. Уже весь интернет облазил, не понимаю ничего (


Ответы (1 шт):

Автор решения: Faraday

Атрибут [Consumes("application/json")] можно убрать, если это не отдельный случай в вашей программе. Иными словами, если у вас API работает с json, то такие вещи настраиваются в конфигурации, а не отдельно для каждого контроллера

ContentType для fetch запроса измените на application/json; charset=utf-8

Ошибка, скорее всего связанна с тем, что эндпоинт принимает объект JsonElement, а вы отправляете строку в виде {'search':'${text}'}. Попробуйте отправить тело запроса в формате объекта без использования символов `

→ Ссылка