2016-11-14 3 views
0

У меня есть приложение WebAPI C#. Мой метод GET определяется как:Прочитать содержимое тела из HTTP GET в C# WebAPI

[HttpGet] 
public HttpResponseMessage Get(string id) 

Этот API возвращает некоторый контент из базы данных, на основе данной id. Требуется еще один параметр, но он так долго, что его URL-адрес не работает, поэтому я использую тело GET для отправки такого второго параметра.

Как я могу получить его из метода get?

Я попытался

var dataOnBody = await Request.Content.ReadAsStringAsync(); 

, но он не работает, как метод Get не async, и я думаю, что не нужно быть, что (я хочу нормальную функцию блокировки, которая считывает содержимое из тело и выводит строку)

Я просто нужен простой способ, чтобы извлечь мою строку из тела запроса

+0

Метод управления Chane для 'public HttpResponseMessage Get (строка id, [FromBody] bodyValue)' – Fabio

+0

Это может быть полезно: [http://stackoverflow.com/a/983458/1565525](http://stackoverflow.com/a/983458/1565525) – Fabio

+0

Лучше всего использовать метод Post в вашем случае не получить, –

ответ

1

Даже если вы каким-то образом удается сделать это, вы обнаружите, что поддержка не является универсальным. HTTP specs говорят:

метод

GET позволяет получать любую информацию (в форме лиц) идентифицируются Request-URI.

Таким образом, возвращаемые данные основываются только на URI, а не на теле. Многие библиотеки даже не позволяют отправлять тело запроса во время GET.

+0

Итак, что лучший подход, когда очень длинный параметр должен быть отправлен как часть запроса HTTP GET? –

+0

Если он не может быть включен в URI, то POST или PUT действительно ваш лучший вариант. Или, может быть, веб-сокет. Но все зависит от того, что вы на самом деле пытаетесь достичь. –

Смежные вопросы