Version 19 (modified by 11 years ago) ( diff ) | ,
---|
Web Services
Sahana Eden exposes all it's resources as RESTful Web Services for Import/Export of XML &/or JSON. This is, of course, subject to correct authentication, where-configured.
The API is documented here: URL Format
Old Ideas
Information on alternatives is listed below:
gluon/tools.py
supports easy exposing of functions to XMLRPC or JSONRPC:
- http://web2py.com/examples/default/tools#services
- http://groups.google.com/group/web2py/browse_thread/thread/53086d5f89ac3ae2
(originally in T3: http://groups.google.com/group/web2py/browse_thread/thread/9ec8b06b158adb75):
Model:
from gluon.tools import Service service = Service(globals())
Controller:
@service.jsonrpc @service.xmlrpc @service.amfrpc def organisation(): "RESTlike CRUD controller" return shn_rest_controller(module, 'organisation')
Can test authentication/REST using wget/curl:
- http://groups.google.com/group/web2py/msg/dde8335c4ec26b99
- Rest-UI client: http://code.google.com/p/rest-client/
Token-based authentication:
Note that most web-services clients don't support cookies & hence are stateless (no sessions support):
- http://groups.google.com/group/web2py/browse_thread/thread/6538ae13cb8f28d3
- use
session.forget()
inside controllers expecting such clients
- use
- XML-RPC client which does support Cookies: http://code.activestate.com/recipes/501148/
We can access data from the database exported as JSON (for easy use within Javascript clients) by simply calling the RESTlike controller with the var ?format=json
:
/sahana/module/resource?format=json # Lists all records of this resource /sahana/module/resource/id?format=json # Display record with record.id==id /sahana/module/resource/create?format=json # ToDo /sahana/module/resource/update/id?format=json # ToDo
Another approach (using JSONRPC e.g. with Pyjamas):
- http://mdp.cti.depaul.edu/AlterEgo/default/show/203
- http://groups.google.com/group/web2py/browse_thread/thread/9bb107c2fbd1a34b
Twitter feeds as JSON: