我目前正在为不同项目的同事审核一些代码,他们正在使用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。
答案 0 :(得分:3)
如果不知道他们设计API的约束条件,就无法回答这个问题。例如,我们的API能够完全使用POST请求,因为它需要由Flash调用,它有GET错误(即无法发送请求标头)并且无法发送PUT或DELETE。一些Javascript库也有类似的限制。
是的,在理想的世界中,它会遵循HTTP语义。但我们并不生活在一个理想的世界里。你需要弄清楚他们决定使用POST是出于对HTTP协议语义的无知,还是基于调用者限制的实用主义。