You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When the client sends a POST request that consists of any other JSON value besides a JSON object, e.g, a string or an array, the endpoints framework returns with 500 Internal Server Error. Would expert a 400 Bad Request error for parsing ProtoRPC request.
To reproduce, e.g., use the echo example.
Example queries returning 500:
Traceback (most recent call last):
File "/base/alloc/tmpfs/dynamic_runtimes/python27g/7679791231c143f9/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 267, in Handle
result = handler(dict(self._environ), self._StartResponse)
File "/base/data/home/apps/s~peeter-sandbox/20190418t084040.417569099234297404/lib/endpoints_management/control/wsgi.py", line 166, in __call__
return self.wsgi_backend(environ, start_response)
File "/base/data/home/apps/s~peeter-sandbox/20190418t084040.417569099234297404/lib/endpoints_management/control/wsgi.py", line 278, in __call__
return self._application(environ, start_response)
File "/base/data/home/apps/s~peeter-sandbox/20190418t084040.417569099234297404/lib/endpoints_management/control/wsgi.py", line 723, in __call__
return self._application(environ, start_response)
File "/base/data/home/apps/s~peeter-sandbox/20190418t084040.417569099234297404/lib/endpoints_management/control/wsgi.py", line 415, in __call__
result = b''.join(result)
File "/base/data/home/apps/s~peeter-sandbox/20190418t084040.417569099234297404/lib/endpoints/endpoints_dispatcher.py", line 147, in __call__
yield self.dispatch(request, start_response)
File "/base/data/home/apps/s~peeter-sandbox/20190418t084040.417569099234297404/lib/endpoints/endpoints_dispatcher.py", line 170, in dispatch
return self.call_backend(request, start_response)
File "/base/data/home/apps/s~peeter-sandbox/20190418t084040.417569099234297404/lib/endpoints/endpoints_dispatcher.py", line 337, in call_backend
orig_request, params, method_config)
File "/base/data/home/apps/s~peeter-sandbox/20190418t084040.417569099234297404/lib/endpoints/endpoints_dispatcher.py", line 510, in transform_request
request = self.transform_rest_request(orig_request, params, method_params)
File "/base/data/home/apps/s~peeter-sandbox/20190418t084040.417569099234297404/lib/endpoints/endpoints_dispatcher.py", line 641, in transform_rest_request
self._update_from_body(body_json, request.body_json)
File "/base/data/home/apps/s~peeter-sandbox/20190418t084040.417569099234297404/lib/endpoints/endpoints_dispatcher.py", line 552, in _update_from_body
for key, value in source.iteritems():
AttributeError: 'unicode' object has no attribute 'iteritems'"
For me it seems, that in the endpoints_dispatcher.py, _update_from_body functions just assumes that the given request.body_json is a dict without providing a graceful fallback.
The text was updated successfully, but these errors were encountered:
When the client sends a POST request that consists of any other JSON value besides a JSON object, e.g, a string or an array, the endpoints framework returns with 500 Internal Server Error. Would expert a 400 Bad Request error for parsing ProtoRPC request.
To reproduce, e.g., use the echo example.
Example queries returning 500:
curl https://<YOUR-PROJECT-ID>.appspot.com/_ah/api/echo/v1/echo -H "Content-Type: application/json" -d '"hello world"'
curl https://<YOUR-PROJECT-ID>.appspot.com/_ah/api/echo/v1/echo -H "Content-Type: application/json" -d '["hello", "world"]'
Log message:
For me it seems, that in the
endpoints_dispatcher.py
,_update_from_body
functions just assumes that the givenrequest.body_json
is a dict without providing a graceful fallback.The text was updated successfully, but these errors were encountered: