Как передать объект в RESTful Service с GET-запросом? - PullRequest
0 голосов
/ 01 декабря 2011

Я видел некоторые сообщения в stackoverflow, в которых говорилось: " отправка списка элементов в методе GET НЕ разрешена. Это должно выполняться только методом POST "

Мой код выглядиткак

    [OperationContract]
    [WebGet(UriTemplate = "Employee/{emp}",RequestFormat=WebMessageFormat.Json)]
    Employee GetEmpDetails(string emp);

и мой входной объект json будет "{'id': 1, 'name': 'test', ....} Есть ли альтернативный способ решения этой проблемы.

Спасибо

Ответы [ 3 ]

3 голосов
/ 01 декабря 2011

Можно отправить список элементов с помощью GET, просто из коробки поддерживаются только примитивные значения.Строковые значения работают просто отлично, но если вы хотите передать сложный объект, вам нужно создать пользовательский QueryStringConverter.Пост в http://blogs.msdn.com/b/carlosfigueira/archive/2011/08/09/wcf-extensibility-querystringconverter.aspx объясняет, как это можно сделать.

2 голосов
/ 01 декабря 2011

Если вы сделаете свой сервис RESTful, вы, скорее всего, будете использовать HTTP PUT для метода Add и HTTP POST для метода Update.Абсолютно нормально передавать объект этим методам, потому что objet будет частью тела HTTP-запроса, а не частью URI.URI важен для запросов HTTP GET.HTTP GET запросы должны быть только для извлечения данных, а не для модификации данных.

1 голос
/ 01 декабря 2011

Вы смешиваете HTTP GET / POST / ... запросы и REST GET / POST / PUT / DELETE / ... Когда вы хотите запросить что-то RESTful - вы делаете GET-запрос.В вашем случае я думаю, что это должно выглядеть как

employee/{id}

или

employee/{name}

Обратите внимание, что использование строчных букв в URI предпочтительнее.Если вам нужно несколько критериев GET, я думаю, это может выглядеть так:

employee/id/{id}/name/{name}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...