2012-04-11 175 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(因爲那個周圍的瀏覽器錯誤較少)。