2012-03-10 12 views
5

私はMVCフレームワークを開発しようとしています。RESTful MVCフレームワークでHTTPリダイレクトを使用することはできますか?

ユーザーが新しいレコードを作成すると、新しいレコードが正常に作成された場合、新しいレコードが表示されるように思えます。

httpリダイレクトを使用して、ユーザーを新しいレコードのビューに移動することはできますか?

答えて

6

しないでください!状況に応じて正しいHTTP応答コードを使用してください。たとえば、お使いのシステムへのユーザーの投稿が新しいレコード場合:

POST record/id 
New record stuff 

は笑顔で幸せそうな顔を持つHTML表現として、だけでなく、正しいHTTPレスポンスコードとしてだけでなく、フィードバックを与えます。 (。つまり、HTTP 201 - 作成された)

201 Created 
+0

部分的にしか正しくありません。レコードの 'id'がUser-Agent(UA)に事前に知られている場合、(技術的に可能な)正しい方法はPUTです。 'id'がUAによって知られておらず、サーバ側に割り当てられている場合、サーバは201応答コードで応答し、' Location'ヘッダを使用して新しく作成されたリソースのURIをUAに示す必要があります。 (OPがリダイレクトについて具体的に尋ねたので、これを明確にしたかった) – MicE

+0

@MicE明確化のために感謝! – supertopi

+0

私の元の投稿以来、インスピレーションのためのいくつかの既存のフレームワークを見てきました。私は、Yiiフレームワークが最初に提案したことをするように見えることを発見しました.. – jx12345

2

あなたはセマンティックな答えで「作成」アクションを応答すべき新しく作成されたレコードを表示しながら、これは通常は当たり前と考えられています。

また、新しく追加されたアイテムの「読み取り」アクションを示すLocationヘッダーを追加する方がさらに優れています。

リチャードソン成熟度モデルのビューをご覧になりたい場合は、article Martin Fowlerが書きました。

+0

ありがとう、ちょうどあなたが言及した記事を読んで、それはよく、おかげでもう一度 – jx12345

2

レコードを作成する場合は、HTTP 201が推奨されるステータスコードです。

ただし、リダイレクトしたい場合があります。たとえば、あなたのAPIは現在のURLにはなく、ユーザーを新しいURLにリダイレクトしたいとします。

+0

私は何を見つけたのthatsの種類、私は物事を表示するために使用した既存の 'ビュー'を使用してデータベース内のものを作成していたが、その後、任意の相対的なリンクがbeacuase私は例えば、私はどこにいるべきであるかよりむしろcom/create。 example.com/view/1ので、リダイレクトを使用することに決めましたが、私は間違って感じました。 – jx12345

関連する問題