私の RESTful API では、いくつかの特別な場合 (たとえば、内部サブスクリプションの有効期限が切れている; これが REST に聞こえないことはわかっています) でリダイレクト (303) を返します。API をテストするために、jQuery を使用して簡単な Web ページを作成しました。ただし、303 を取得した場合、ブラウザー (XHR?) がリダイレクト自体を処理し、新しいリソースを取得するようです。これは Ajax 呼び出しから隠されているため、最後に 200 しか返されません。もちろん、元の呼び出しが成功しなかったため、これは誤解を招きます。明らかに、これは私が考えていたことではありません。クライアント スクリプトに、別のことを行う必要があることを認識させたかったのです (-> 別のリソースを取得)。
今、私は 303 を返すのが良い考えかどうか自問しています。代わりに、単純な 4xx を返し、クライアントをそのままにしておくことができます.... (おそらくゼロから始めます)
$.ajax({
url: self.links()[0].href,
type: "POST",
statusCode: {
200: function () {
//I always ended up here
},
303: function () {
}
},
complete: function (e, xhr, settings) {
if (e.status === 200) {
//..and then here
} else if (e.status === 303) {
} else {
}
}