Skip to content
This repository was archived by the owner on Sep 6, 2022. It is now read-only.

Commit a9dc427

Browse files
committed
Merge pull request #9 from graphql-python/feature/handler_fixes
Allow posting Query as plaintext body in POST
2 parents 92ad4df + 6c3be8d commit a9dc427

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

graphene_gae/webapp2/__init__.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,19 +53,26 @@ def _get_pretty(self):
5353
return self.app.config.get('graphql_pretty', False)
5454

5555
def _get_grapl_params(self):
56-
query = None if not self.request.body else self.request.json_body.get('query')
56+
try:
57+
request_data = self.request.json_body
58+
except:
59+
request_data = {}
60+
61+
request_data.update(dict(self.request.GET))
62+
63+
query = request_data.get('query', self.request.body)
5764
if not query:
5865
webapp2.abort(400, "Query is empty.")
5966

60-
operation_name = self.request.json_body.get('operation_name')
61-
variables = self.request.json_body.get('variables')
67+
operation_name = request_data.get('operation_name')
68+
variables = request_data.get('variables')
6269
if variables and isinstance(variables, six.text_type):
6370
try:
6471
variables = json.loads(variables)
6572
except:
6673
raise webapp2.abort(400, 'Variables are invalid JSON.')
6774

68-
pretty = self.request.json_body.get('pretty') or self.request.GET.get('pretty')
75+
pretty = request_data.get('pretty')
6976

7077
return query, operation_name, variables, pretty
7178

tests/_webapp2/test_graphql_handler.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,3 +184,7 @@ def testPOST_override_pretty_via_post_param(self):
184184
pretty=True
185185
)))
186186
self.assertEqual(response.body, '{\n "data": {\n "greet": "Hello You!"\n }\n}')
187+
188+
def testPOST_stringBody_readsQueryFromBodyAndRestFromGET(self):
189+
response = self.app.post('/graphql?pretty=True', params='query helloYou { greet(who: "You") }')
190+
self.assertEqual(response.body, '{\n "data": {\n "greet": "Hello You!"\n }\n}')

0 commit comments

Comments
 (0)