2009-07-19 61 views
0

我目前正在审查一些不同项目上的同事的代码,他们正在使用WCF ReST Web服务。Web服务 - Put vs Post与获取

我担心的是,对于他们的每种方法,只有HTTP协议POST已被指定。无论实际方法是负责获取,更新还是创建记录,情况都是如此。

Web服务应该始终遵循良好的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协议语义的无知,还是基于调用者的限制而产生的实用主义。