ControllerBase помечен аттрибутом ApiController.
метод Post, переменная помечена аттрибутом FromBody.
Нужно что бы его можно было дергать с использованием одного из двух ContentType
application/json - по умолчанию. работает сейчас.
text/plain - если сейчас использую то дает ошибку:
"title": "Unsupported Media Type",
"status": 415,
Гугл говорит:
1. Если ошибка "title": "Unsupported Media Type" при text/plain - то выбирай application/json. Я это и сам знаю и это мне не подходит.
2. Писать собственный форматер.
3. Сказать что text/plain не поддерживается, т.к. большие накладные расходы. Типа очень дорого по сравнению с application/json.
Кто нибудь сталкивался с такого рода проблемой? как подружить два формата без пункта 2?
А ты указал, что данные должны приходить в json?
нет, сейчас попробую. Я чет думал что это надо указывать для application/json типа что бы знать чем десириализацию делать. Но т.к. у меня и так работает, а объекты гоняю через System.Text.Json (он пошустрее).
та же фигня. только ещё и application/json перестал работать. такое впечатление что ему теперь нужен xform, а не переменная с body
Оставь как есть. Теперь перейдем к тому какой ты отправляешь запрос. Скинь запрос со всеми хедерами. И покажи как ты поставил атрибут в родительском классе BaseController
$response = Invoke-WebRequest -Uri "..." -Method Post -Body $body -ContentType "application/json"
ContentType относится к headers. Его нельзя в тело записывать
Понимаю что надо в Headers раньше работало до установки пакета
Body же в виде json отправляешь? Ошибка на скрине говорит, что поля не прошли валидацию
если это завернуть не в raw application/json а в x-form то всё ок. либо убрать services.AddControllers().AddNewtonsoftJson(); Тогда тоже заработает.
Никак. Как ты вообще себе text/plain представляешь?
Как поток байтов преобразованный к стрингу. Вот и я о том же. Т.е. получается свой обработчик вешать.
что-то странное. Всё равно не понятно
Обсуждают сегодня