2017-05-27 10 views
0

Django DestroyAPIViewDetailAPIViewをどのように使用しても、一般的に受け入れられている方法はRESTfulnessのままですか?その後、ジャンゴで1つのビュークラス(generics.DetailAPIView)またはメソッドは、呼び出しDjango api - DestroyAPIViewを使用してRESTfulnessを維持する方法

を処理するために作成されます

私はRESTを理解していれば、正しく、それは次のように(一例のみを)動作するはず

/api/game/222 

RESTの世界では、 メソッド(get、...)を処理するために汎用APIクラスを使用すると考えています。

しかし、クラスを使用したい場合はgenerics.DestroyAPIView)を使用して、ゲームを削除する呼び出しを処理します。 それから私は使用する必要があります

/api/game/delete/222 

要求を正しいビューに送信する。

これは、RESTFULnessと一致しないようです。削除リクエストを送信し、/apt/game/222と一致する同じパターンを使用してゲームを削除するには、HTTPの削除メソッドの を使用する必要があります。それは冗長です。

質問:何か不足していますか?

要約するとオプション1:

/api/game/delete/222 (DestroyAPIView) 
/api/game/detail/222 (DetailAPIView) 

オプション2

/api/game/222 (RetrieveDestroyAPIView) 

私がいる限り、それははっきりととして一貫性のあるとしていずれかの方法で作品を推測し、以下に述べる。 "right"という方法はありません。

+1

ゲームを削除するには、 '/ api/game/222'に' DELETE'動詞を送るだけです。これはRESTの基本概念の1つです。 –

答えて

0

ここで聞いている内容に「緩和」がないかどうかわかりません。それは理にかなっている限り、異なるマッチングパターンを持つことはまったく問題ありません。

この例では、通常、/api/game/222generics.ListCreateAPIViewではありません。これは、Listがすべてのゲームのリストを返すため、私たちはidを渡さないからです。Createは新しいGameを作成しようとしています。 idはまだデータベースにないため、一致するパターンは通常/api/game/である必要があります。

/api/game/222 - このようなパターンは、我々は通常ため、URLで指定されたidgenerics.RetrieveUpdateDestroyAPIViewに使用する、私たちはどちらかに正しいGameオブジェクトを取得し、取得、更新または削除することができます。

安心なAPIについては、stack overflow questionの回答で「安らか」についての説明があります。

+0

質問を更新して、私が求めていたことをよりよく反映させました。しかし、私は答えがあなたの最初の文章だと信じています。 "それが意味をなさない限り" –

関連する問題