Отправить сообщение, но обработать его как 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
Как бы то ни было, 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