我正在构建一个Web服务的API,我一直在问自己。想象一下,有一个API调用来创建一个新项目,比如/api/project/create.json
,它会将(302 Redirect
)重定向到新创建的项目,比如说/api/project/123.json
。如果第一个请求是通过POST发送的,那么在哪里指定,必须用GET重新获得第二个URI?
是否有任何RFC声明,重定向始终必须遵循GET?或者仅更改URL并将相同的POST请求再次发送到新URL是有效的客户端行为吗?
想象一下,我有旧的API服务器和新的API服务器,我想将客户端POST-Request重定向到新的API-URL。我该怎么办?
答案 0 :(得分:1)
如果第一个请求是通过POST发送的,那么在哪里指定,必须使用GET重新获得第二个URI?
无处。
是否有任何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-Request重定向到新的API-URL。我该怎么办?
我建议使用状态码307(因为那个浏览器错误较少)。