@@ -179,16 +179,21 @@ def json_encode(self, request, d, pretty=False):
179
179
return json .dumps (d , sort_keys = True ,
180
180
indent = 2 , separators = (',' , ': ' ))
181
181
182
- # noinspection PyBroadException
183
182
def parse_body (self , request ):
184
183
content_type = self .get_content_type (request )
185
184
186
185
if content_type == 'application/graphql' :
187
186
return {'query' : request .body .decode ()}
188
187
189
188
elif content_type == 'application/json' :
189
+ # noinspection PyBroadException
190
190
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 )
192
197
if self .batch :
193
198
assert isinstance (request_json , list ), (
194
199
'Batch requests should receive a list, but received {}.'
@@ -203,7 +208,7 @@ def parse_body(self, request):
203
208
return request_json
204
209
except AssertionError as e :
205
210
raise HttpError (HttpResponseBadRequest (str (e )))
206
- except :
211
+ except ( TypeError , ValueError ) :
207
212
raise HttpError (HttpResponseBadRequest ('POST body sent invalid JSON.' ))
208
213
209
214
elif content_type in ['application/x-www-form-urlencoded' , 'multipart/form-data' ]:
0 commit comments