Отправить сообщение, но обработать его как GET?? rest-framework-bundle

У меня есть api с django rest framework bundle

Мой api выглядит так, принимает только POST.

@api_view(["POST"])
@authentication_classes([])
@permission_classes([])
def myapi_v1_result(request):

затем я отправил на этот api с помощью кнопки POST

enter image description here

Как бы то ни было, Method Not allowed почему это происходит?

INFO:     127.0.0.1:49305 - "POST /myapi/v1/result HTTP/1.1" 200 OK
Method Not Allowed: /myapi/v1/result
WARNING:django.request:Method Not Allowed: /myapi/v1/result

Насколько я понимаю, он не выполняет GET-запрос как api, а является частью DRF browsable API, обновляемого после публикации.

Я бы также настоятельно рекомендовал перейти на представления, основанные на классах.

class CustomView(APIView):
    permission_classes = []
    authentication_classes = []
    serializer_class = CustomSerializer

    def post(self, request, *args, **kwargs):
        serializer = CustomSerializer(
            data=request.data, context={"request": self.request}
        )
        if serializer.is_valid():
            return Response(serializer.data, status=status.HTTP_200_OK)

        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

    def get(self, request, *args, **kwargs):
        return Response({}, status=status.HTTP_200_OK)

Для этого вам понадобится метод validate в вашем сериализаторе, однако это полностью зависит от ваших потребностей.

Вы можете полностью отказаться от функции get для фактической конечной точки, но при использовании browsable api это исправит ошибку Method Not Allowed

Вернуться на верх