wiki:DeveloperGuidelines/WebServices

Version 19 (modified by Fran Boon, 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:

(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:

Token-based authentication:

Note that most web-services clients don't support cookies & hence are stateless (no sessions support):


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):


Twitter feeds as JSON:


DeveloperGuidelines

Note: See TracWiki for help on using the wiki.