Dear All, I found a workaround to the problem, I would like to double-check with you what is the impact in term of performance, maintainability etc ...
Problem described in my previous email is caused by two lambda functions (update_record and delete_record) returned by return dict(message = db.message(id)) When using this return dict(message=db(db.message.id==id).select()) only database fields are returned. What are other methods to avoid these lambda functions ? Should I raise a bug against the documentation ? Thanks for your advises Seb On 19 Mar 2012, at 01:10, sebsto wrote: > Dear All, > > I am new the web2py and trying to use the relatively new RESTful API, > as described at > http://web2py.com/books/default/chapter/29/10#Restful-Web-Services > > I am testing it with a very simple model : > db.define_table('message', > Field('sender', required=True), > Field('recipient', required=True), > Field('text', required=True)) > > And the doc provided function: > @request.restful() > def api(): > response.view = 'generic.json' > def GET(tablename,id): > if not tablename=='message': raise HTTP(400) > return dict(message = db.message(id)) > return locals() > > When calling > curl -v http://localhost:8000/RESTtest/default/api/message/1.json > > It generates an HTTP 500 error and the following ticket is logged > 1 generic.json TypeError: <function <lambda> at 0xa9a72f0> is > not > JSON serializable + details > > Traceback (most recent call last): > File "gluon/restricted.py", line 205, in restricted > File "/Applications/web2py.app/Contents/Resources/applications/ > RESTtest/views/generic.json", line 2, in <module> > File "gluon/serializers.py", line 61, in json > File "gluon/contrib/simplejson/__init__.py", line 270, in dumps > File "gluon/contrib/simplejson/encoder.py", line 217, in encode > File "gluon/contrib/simplejson/encoder.py", line 486, in _iterencode > File "gluon/contrib/simplejson/encoder.py", line 460, in > _iterencode_dict > File "gluon/contrib/simplejson/encoder.py", line 460, in > _iterencode_dict > File "gluon/contrib/simplejson/encoder.py", line 496, in _iterencode > File "gluon/serializers.py", line 37, in custom_json > TypeError: <function <lambda> at 0xa9a72f0> is not JSON serializable > > Similar problem was reported here > http://groups.google.com/group/web2py/browse_thread/thread/837aa4b3df4c1a93/1bc6d35248d9f9e1?show_docid=1bc6d35248d9f9e1&pli=1 > > Is there an issue in generic.json ? > > Thanks for your help > > Seb