Changes between Version 19 and Version 20 of DeveloperGuidelines/WebServices


Ignore:
Timestamp:
11/07/14 09:11:28 (7 years ago)
Author:
Fran Boon
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DeveloperGuidelines/WebServices

    v19 v20  
    55
    66The API is documented here:
    7 [wiki:S3XRC/RESTfulAPI/URLFormat URL Format]
    8 
    9 == Old Ideas ==
    10 Information on alternatives is listed below:
    11 {{{gluon/tools.py}}} supports easy exposing of functions to XMLRPC or JSONRPC:
    12   * http://web2py.com/examples/default/tools#services
    13   * http://groups.google.com/group/web2py/browse_thread/thread/53086d5f89ac3ae2
    14 (originally in T3: http://groups.google.com/group/web2py/browse_thread/thread/9ec8b06b158adb75):
    15 
    16 Model:
    17 {{{
    18 from gluon.tools import Service
    19 service = Service(globals())
    20 }}}
    21 Controller:
    22 {{{
    23 @service.jsonrpc
    24 @service.xmlrpc
    25 @service.amfrpc
    26 def organisation():
    27     "RESTlike CRUD controller"
    28     return shn_rest_controller(module, 'organisation')
    29 }}}
    30 
    31 Can test authentication/REST using wget/curl:
    32  * http://groups.google.com/group/web2py/msg/dde8335c4ec26b99
    33  * Rest-UI client: http://code.google.com/p/rest-client/
    34 Token-based authentication:
    35  * http://groups.google.co.uk/group/web2py/browse_thread/thread/98258d69b6a6f927
    36 
    37 Note that most web-services clients don't support cookies & hence are stateless (no sessions support):
    38  * http://groups.google.com/group/web2py/browse_thread/thread/6538ae13cb8f28d3
    39   * use {{{session.forget()}}} inside controllers expecting such clients
    40  * XML-RPC client which does support Cookies: http://code.activestate.com/recipes/501148/
    41 
    42 ----
    43 We can access data from the database exported as JSON (for easy use within Javascript clients) by simply calling the [https://trac.sahana3.org/wiki/BluePrintREST RESTlike controller] with the var {{{?format=json}}}:
    44 {{{
    45 /sahana/module/resource?format=json           # Lists all records of this resource
    46 /sahana/module/resource/id?format=json        # Display record with record.id==id
    47 /sahana/module/resource/create?format=json    # ToDo
    48 /sahana/module/resource/update/id?format=json # ToDo
    49 }}}
    50 
    51 ----
    52 Another approach (using JSONRPC e.g. with [http://pyjs.org Pyjamas]):
    53  * http://mdp.cti.depaul.edu/AlterEgo/default/show/203
    54  * http://groups.google.com/group/web2py/browse_thread/thread/9bb107c2fbd1a34b
    55 ----
    56 Twitter feeds as JSON:
    57  * http://groups.google.com/group/web2py/browse_thread/thread/bb9b5ddca40d0c87
    58 
    59 ----
    60 DeveloperGuidelines
     7* [wiki: S3#RESTfulAPI]