I've had a stable web2py-based service for some years now.
But it broke today with a small change in a data value - that's my working
hypothesis.
The output of the print statement (see code below):
<Storage
{'{"sort":"relevancy","longitude":-0.1228710438544765,"keywords":"parrot","latitude":51.51158325978085,"page_cursor":"A2ebAAFVVvv0OW53MHyzU0VWVVBxb0tiUW9oWkd0UHMzU09aUjIwYUFBPT0jMTA':
'"}'}>
The value of "page_cursor" sent by the caller is "page_cursor" :
"A2ebAAFVVvv0OW53MHyzU0VWVVBxb0tiUW9oWkd0UHMzU09aUjIwYUFBPT0jMTA=' i.e.
there is an "=" suffix. But by the time my controller receives the
json structure the "=" has been mangled. This obviously defeats the
simplejson loads function as the data is no longer valid json. Previous to
today page_cursor values have been more straightforward and not included a
"=" character and the code has executed fine.
Any suggestions? A fix or a different approach to parsing request.post_vars
The call is to: https://…/api/v1/article_search
The code excerpts:
app/controller.py
@articles_service.json
def get_article():
from applications.app.modules.article import get_articles
print(request.post_vars)
return get_articles(request.post_vars)
app/modules/article.py
def get_articles(json_fields):
'''
get with a JSON interface
'''
from gluon.contrib.simplejson import loads
fields = {}
for i in json_fields.keys():
fields = loads(i) # crashes here.
return …
routes.py
routes_in = ( ('/api/v1/$anything',
'/app/controller/call/json/$anything') )
routes_out = [(x, y) for (y, x) in routes_in]
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.