2012-04-11 177 views
0

我正在构建一个Web服务的API,我一直在问自己。想象一下,作为一个API调用来创建一个新项目,如/api/project/create.json,并将其重定向到(302 Redirect)新创建的项目,例如/api/project/123.json。如果第一个请求是通过POST发送的,那么在第一个请求中指定的地方是第二个URI必须通过GET进行修改?302重定向是否需要GET请求?

是否有任何RFC表明,重定向总是必须遵循GET?或者,只有更改URL并将相同的POST请求再次发送到新URL,才有效的客户端行为?

想象一下,我有旧的API服务器和一个新的API服务器,我想将客户端POST请求重定向到新的API-URL。我需要做什么?

回答

1

如果第一个请求是通过POST发送的,那么在哪里指定,第二个URI必须用GET来回顾?

无处。

是否有任何RFC表明,重定向总是必须跟随GET?或者,只有更改URL并将相同的POST请求再次发送到新URL,才有效的客户端行为?

不,实际上RFC(RFC 2616)指出在301和302上更改方法名称是不正确的。

另请参阅http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p2-semantics-19.html#status.3xx欲知更多信息。

想象一下,我有旧的API服务器和一个新的API服务器,我想将客户端POST请求重定向到新的API-URL。我需要做什么?

我建议使用状态码307(因为那个周围的浏览器错误较少)。