2009-07-19 2 views
0

В настоящее время я просматриваю код для коллег по другому проекту, и они используют веб-сервис WCF ReST.Веб-сервисы - Put vs Post vs Get

Моя забота заключается в том, что для каждого из их методов задан только протокол POST протокола HTTP. Это верно, отвечает ли фактический метод на получение, обновление или создание записей.

Должны ли веб-службы всегда придерживаться хороших стандартов протокола HTTP для обработки информации? Не должен ли метод, подобный ниже, использовать HTTP-метод «GET», а не указанный «POST»?

[ServiceContract] 
public interface IBranchService 
{ 
    [OperationContract] 
    [WebInvoke(
     Method="POST", 
     BodyStyle = WebMessageBodyStyle.WrappedRequest, 
     ResponseFormat = WebMessageFormat.Json 
     ) 
    ] 
    GridResponse GetBranchesAll(string brandCode, string branchNumber); 
... 

Нет никаких других ограничений в архитектуре, которые диктуют необходимость использования только POST.

ответ

3

Невозможно ответить на это, не зная ограничений, при которых они разработали API. Например, наш API имеет возможность полностью работать с запросами POST, потому что он должен быть вызван Flash, который имеет ошибки с GET (т. Е. Не может отправлять заголовки запросов) и не может отправлять PUT или DELETE. Некоторые библиотеки Javascript имеют схожие ограничения.

Да, в идеальном мире он будет придерживаться семантики HTTP. Но мы не живем в идеальном мире. Вам нужно выяснить, связано ли их решение использовать POST от незнания семантики протокола HTTP или от прагматизма, основанного на ограничениях вызывающего.