2017-05-04 12 views
0

私のAPIプロジェクトにDjango Rest Frameworkを使用しています。今私はポストと1つのAPIVIEWを持って、メソッドを取得します。どのように私は特定の取得または投稿のためだけに別のエンドポイントを追加することができます。 -requestとuser_contentのみPOST -requestを受け入れるDjango Rest Framework、1つのAPIビューの別のエンドポイントURL

urlpatterns = [ 
    url(r'^user\/?$', UserView.as_view()), 
    url(r'^user_content\/?$', UserView.as_view()), 
] 

userだけGETを受け入れる:

class UserView(APIVIEW): 
    def get(self, request, format=None): 
    ..... 
    pass 

    def post(self, request, format=None): 
    ..... 
    pass 

は今urls.pyに、私はこのような何かをしたいです。

+0

これは、REST API標準に反するものです。だから、私はそうしないことを強く勧めます。 –

答えて

3

しないでください。 APIViewでは、既に別のタイプのリクエストを個別に処理することができます。 2種類の異なるAPIViewを作成するか、getまたはpostの方法でこれを処理できます。

class UserView(APIView): 
    def get(self, request, format=None): 
     is_user_request = request.data.get('is_user_request', False) 
     if is_user_request: 
      # Handle your user request here and return JSOn 
      return JsonResponse({}) 
     else: 
      # Handle your other requests here 
      return JsonResponse({}) 

    def post(self, request, format=None): 
     is_user_content_request = request.data.get('is_user_content_request', False) 
     if is_user_content_request: 
      # Handle your user content request here and return JSOn 
      return JsonResponse({}) 
     else: 
      # Handle your other type requests (if there is any) here 
      return JsonResponse({}) 


urlpatterns = [ 
    url(r'^api/user$', UserView.as_view()), 
] 

これは単なる例です。各リクエストに特定のパラメータがある場合は、それらのパラメータからリクエストのタイプを識別できます。上記のように余分なブール値を設定する必要はありません。この方法で確認し、それがあなたのために働くかどうかを確認してください。

関連する問題