diff --git a/silk/views/request_detail.py b/silk/views/request_detail.py index 6baa3adb..631cd1fa 100644 --- a/silk/views/request_detail.py +++ b/silk/views/request_detail.py @@ -19,24 +19,28 @@ def get(self, request, request_id): query_params = None if silk_request.query_params: query_params = json.loads(silk_request.query_params) - body = silk_request.raw_body - try: - body = json.loads(body) # Incase encoded as JSON - except (ValueError, TypeError): - pass + context = { 'silk_request': silk_request, - 'curl': curl_cmd(url=request.build_absolute_uri(silk_request.path), - method=silk_request.method, - query_params=query_params, - body=body, - content_type=silk_request.content_type), 'query_params': json.dumps(query_params, sort_keys=True, indent=4) if query_params else None, - 'client': gen(path=silk_request.path, - method=silk_request.method, - query_params=query_params, - data=body, - content_type=silk_request.content_type), 'request': request } + + if len(silk_request.raw_body < 20000): # Don't do this for large request + body = silk_request.raw_body + try: + body = json.loads(body) # Incase encoded as JSON + except (ValueError, TypeError): + pass + context['curl'] = curl_cmd(url=request.build_absolute_uri(silk_request.path), + method=silk_request.method, + query_params=query_params, + body=body, + content_type=silk_request.content_type), + context['client'] = gen(path=silk_request.path, + method=silk_request.method, + query_params=query_params, + data=body, + content_type=silk_request.content_type), + return render(request, 'silk/request.html', context)