У меня есть RESTful службы WCF с помощью метода объявлен как это:Как вызвать метод службы RESTful WCF с несколькими параметрами?
[OperationContract(Name = "IncrementAge")]
[WebInvoke(UriTemplate = "/", Method = "POST", ResponseFormat = WebMessageFormat.Json)]
Person IncrementAge(Person p);
Вот реализация:
public Person IncrementAge(Person p)
{
p.age++;
return p;
}
Так он принимает сложный тип Person, увеличивает свойство возраст одного и косами обратно, используя сериализацию JSON. Я могу проверить это, отправив сообщение POST на эту услугу:
POST http://localhost:3602/RestService.svc/ HTTP/1.1
Host: localhost:3602
User-Agent: Fiddler
Content-Type: application/json
Content-Length: 51
{"age":25,"firstName":"Hejhaj","surName":"Csuhaj"}
Это работает. Что делать, если я хотел бы иметь такой метод?
Person IncrementAge(Person p, int amount);
Таким образом, у него будет несколько параметров. Как мне создать сообщение POST для этого? Это возможно?
Благодаря
Использование параметра запроса для передачи аргумента *, действовавшего на * в запросе POST, кажется мне немного странным. Я бы зарезервировал параметры запроса для * выбора * ресурсов (для получения или обновления), а не для фактического * изменения * ресурсов. – kpozin
@kpozin Почему? Является ли намерение непонятным? –
Проблема заключается в том, что IncrementAge возвращает Person, поэтому он граничит с GET (т. Е. Запрашивает конкретное представление ресурса). Несмотря на то, что метод больше связан с вызовом RPC ... – AshesToAshes