2014-11-21 59 views
0

我在Django的REST框架如下功能:Django的REST框架無法處理畸形的JSON

@api_view(['GET', 'PUT']) 
@permission_classes((permissions.IsAuthenticated,)) 
def TestView(request, app_id): 
    return Response({}) 

應該總是返回與空對象的JSON響應,對不對?錯誤。如果我PUT數據在此URL與媒體類型application/json,並把它畸形的JSON,然後Django的barfs了500迴應:

ParseError at /api/v1/test-url 
No exception message supplied 

我覺得DRF要麼拋出異常,我能趕上,或發出400錯誤。事實上,即使文檔狀態:

的包裝還會提供行爲,比如返回405方法不 允許反應在適當的時候,並處理與畸形 輸入訪問request.DATA時發生的任何ParseError 例外。

那麼,爲什麼我的應用程序吐出500錯誤?

+1

你有沒有嘗試過基於類的視圖? – 2014-11-22 00:23:20

回答

0

您可以配置custom exception handler並處理那裏的ParseError。

+0

* *會修復它 - 但我覺得你不應該需要實現一個自定義的異常處理程序來處理壞的JSON數據。 – Jamie 2014-11-22 00:07:15

+0

那麼,或者你可以實現自己的JSONParser類,並將其配置爲默認的JSONParser。然而,因爲你想要做的是以不同的方式處理異常情況(無效的json),我會更喜歡一個自定義異常處理程序。 – inancsevinc 2014-11-22 00:50:58