-------------------------------------------------------------------------------- RESTful Web Services for Drupal (restws) -------------------------------------------------------------------------------- Maintainers: * Wolfgang Ziegler (fago), wolfgang.ziegler@epiqo.com * Klaus Purer (klausi), klaus.purer@epiqo.com Exposes Drupal resources (e.g. entities) as RESTful web services. The module makes use of the Entity API and the information about entity properties (provided via hook_entity_property_info()) to provide resource representations. It aims to be fully compliant to the REST principles. Installation ------------ * Copy the whole restws directory to your modules directory (e.g. DRUPAL_ROOT/sites/all/modules) and activate the RESTful Web Services module. * There is no user interface or such needed. Usage / Testing --------------- * To obtain the JSON representation of an entity use your browser to visit http://example.com/node/1.json or http://example.com/user/1.json or http://example.com//.json for an example. * In order to access entities via this interface, permissions must be granted for the desired operation (e.g. "access content" or "create content" for nodes). Additionally each resource is protected with a RESTWS permission that can be configured at "admin/people/permissions#module-restws". Design goals and concept ------------------------ * Create a module that simply exposes Drupal's data (e.g. entities) as web resources, thus creating a simple RESTful web service. It aims to be fully compliant to the REST principles. * The module is strictly resource-oriented. No support for message-oriented or RPC-style web services. * Plain and simple. No need for endpoint configuration, all resources are available on the same path pattern. Access via HTTP only. * When the module is enabled all entities should be available at the URL path //, e.g. /node/123, /user/1 or /profile/789. * Resources are represented and exchanged in different formats, e.g. JSON or XML. The format has to be specified in every request. * The module defines resource for all entity types supported by the entity API as well as a JSON format. Modules may provide further resources and formats via hooks. * The module supports full CRUD (Create, Read, Update, Delete) for resources: * Create: HTTP PUT / (requires HTTP Content-Type header set to the MIME type of ) * Read: HTTP GET //. * Update: HTTP POST //. or HTTP POST // (requires HTTP Content-Type header set to the MIME type of the posted format) * Delete: HTTP DELETE // Note: if you use cookie-based authentication then you also need to set the HTTP X-CSRF-Token header on all writing requests (POST, PUT and DELETE). You can retrieve the token from /restws/session/token with a standard HTTP GET request. * The representation can be json, xml etc. * The usual Drupal permission system is respected, thus permissions are checked for the logged in user account of the received requests. * Authentication can be achieved via separate modules, maybe making use of the standard Drupal cookie and session handling. The module comes with an optional HTTP Basic Authentication module (restws_auth_basic) that performs a user login with the credentials provided via the usual HTTP headers. Debugging --------- You can enable a debug logging facility by setting a variable in settings.php (e.g. in DRUPAL_ROOT/sites/default/settings.php): $conf['restws_debug_log'] = DRUPAL_ROOT . '/restws_debug.log'; It will write the details of every web service request to the file you have specified, e.g. to DRUPAL_ROOT/restws_debug.log.