Web服务 - Put vs Post vs Get

时间:2009-07-19 21:55:33

标签: wcf web-services standards protocols

我目前正在为不同项目的同事审核一些代码,他们正在使用WCF ReST Web服务。

我担心的是,对于他们的每个方法,只指定了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。

1 个答案:

答案 0 :(得分:3)

如果不知道他们设计API的约束条件,就无法回答这个问题。例如,我们的API能够完全使用POST请求,因为它需要由Flash调用,它有GET错误(即无法发送请求标头)并且无法发送PUT或DELETE。一些Javascript库也有类似的限制。

是的,在理想的世界中,它会遵循HTTP语义。但我们并不生活在一个理想的世界里。你需要弄清楚他们决定使用POST是出于对HTTP协议语义的无知,还是基于调用者限制的实用主义。