@@ -179,16 +179,21 @@ def json_encode(self, request, d, pretty=False):
179179 return json .dumps (d , sort_keys = True ,
180180 indent = 2 , separators = (',' , ': ' ))
181181
182- # noinspection PyBroadException
183182 def parse_body (self , request ):
184183 content_type = self .get_content_type (request )
185184
186185 if content_type == 'application/graphql' :
187186 return {'query' : request .body .decode ()}
188187
189188 elif content_type == 'application/json' :
189+ # noinspection PyBroadException
190190 try :
191- request_json = json .loads (request .body .decode ('utf-8' ))
191+ body = request .body .decode ('utf-8' )
192+ except Exception as e :
193+ raise HttpError (HttpResponseBadRequest (str (e )))
194+
195+ try :
196+ request_json = json .loads (body )
192197 if self .batch :
193198 assert isinstance (request_json , list ), (
194199 'Batch requests should receive a list, but received {}.'
@@ -203,7 +208,7 @@ def parse_body(self, request):
203208 return request_json
204209 except AssertionError as e :
205210 raise HttpError (HttpResponseBadRequest (str (e )))
206- except :
211+ except ( TypeError , ValueError ) :
207212 raise HttpError (HttpResponseBadRequest ('POST body sent invalid JSON.' ))
208213
209214 elif content_type in ['application/x-www-form-urlencoded' , 'multipart/form-data' ]:
0 commit comments