2016-04-06 5 views
0

ich eine einfache Ansicht, die Ereignisse in django-Rest-Rahmen aufgeführt:Welchen http-Code, um in ListAPIView zurückzugeben?

class EventListView(generics.ListAPIView): 
    serializer_class = EventListSerializer 

    def get_queryset(self): 
     user_position = self.request.query_params.get('position', '') 
     if not user_position or not re.match(r'^-?\d+\.\d+,-?\d+\.\d+$', user_position): 
      raise APIException('Position is absent or invalid') 

     return Event.objects.filter(...) 

Für diese Ansicht muss ich bestätigen, dass die position Parameter vorhanden und gut ausgebildet ist. Wenn nicht, möchte ich einen entsprechenden HTTP-Fehlercode zurückgeben.

Wie ich gerade jetzt, im Fehlerfall, die API gibt einen 500 Fehlercode, der ich denke, ist schlecht.

Gibt es einen spezifischeren HTTP-Fehlercode, den ich zurückgeben sollte? Ich denke, dass der Statuscode 400 angemessen sein könnte, aber wie kann ich diesen Code aus meiner Sicht explizit zurückgeben?

Danke!

Antwort

0

Der obige Code könnte funktionieren, wenn Sie den ValidationError des DRF erhöhen würden. Der DRF-ValidationError bewirkt, dass die Ansicht einen HTTP_400_BAD_REQUEST-Status zurückgibt.

Es könnte die APIException sein, die die 500 verursacht. Wenn Sie die APIException verwenden möchten, stellen Sie sicher, dass sie den ValidationError von DRF untergliedert.

Verwandte Themen