User34
User34

Reputation: 425

is it possible make two GET endpoints in djangorestframework via APIVIEW

Me need make two GET endpoint in django rest framework in one classes this is endpoints will work with another system via api

i tried

class MyApiView(APIView):
    permission_classes = [AllowAny]

    def get(self, request):
        return Response({'test':'test'})

    @list_route(methods=['GET'], )
    def two_endpoint(self, request):
        return Response({'test': 'test'}) 

but this not work thanks in advance

Upvotes: 1

Views: 2388

Answers (1)

JPG
JPG

Reputation: 88569

try to use ModelViewset class,

views.py

from rest_framework import viewsets


class MyApiView(viewsets.ModelViewSet):
    permission_classes = (AllowAny,)
    serializer_class = MySerializer
    queryset = Sample.objects.all()

    def function_name_1(self, request):
        # do stuff
        return Response(data="return your data")

    def function_name_2(self, request):
        # do stuff
        return Response(data="return your data")

    def function_name_3(self, request, pk):
        # do stuff
        return Response(data="return your data")


urls.py

from rest_framework.routers import DefaultRouter
from django.conf.urls import url
router = DefaultRouter()
router.register(r'myendpoint', MyApiView)

urlpatterns = [
url(r'^myendpoint/end_point_1/$', MyApiView.as_view({'get': 'function_name_1'}), name='function_name_1'),
url(r'^myendpoint/end_point_2/$', MyApiView.as_view({'post': 'function_name_2'}), name='function_name_2'),
url(r'^myendpoint/end_point_3/$', MyApiView.as_view({'put': 'function_name_3'}), name='function_name_3'),
              ]+router.urls


UPDATE-1
Change your views.py to this,

from rest_framework import viewsets


class MyApiView(viewsets.ViewSet):
    permission_classes = (AllowAny,)

    def function_name_1(self, request):
        # do stuff
        return Response(data="return your data")

    def function_name_2(self, request):
        # do stuff
        return Response(data="return your data")

    def function_name_3(self, request):
        # do stuff
        return Response(data="return your data")

Upvotes: 2

Related Questions