RESTful Web Services in Drupal7
-
Upload
bmeme -
Category
Technology
-
view
10.161 -
download
5
Transcript of RESTful Web Services in Drupal7
RESTful Web Services in Drupal 7
‣ Web Services introduction‣ Why REST?‣ The Bricks: Drupal 7, Entity API, RESTful Web Services‣ Connector (REST client)‣ Let’s go coding...‣ Case Study‣ Questions?
RESTful Web Services in Drupal 7
ServiceRequester
ServiceProvider
SOAP, XML-RPC, REST, etc...
Web services
ServiceRequester
ServiceProvider
REST
Web services with Drupal
‣ Use standard HTTP (simple client and simple API)
‣ Multiple data formats (JSON, XML, etc...)
‣ Performance and scalability (Cacheable)
Why REST?
ServiceRequester
ServiceProvider
RESTDrupal 6
or
Drupal 7
Connector
Entity API
Drupal 7
RESTws
The bricks
This module extends the entity API of Drupal core in order to provide a unified way to deal with entities and their properties.
Additionally, it provides an entity CRUD controller, which helps simplifying the creation of new entity types.
http://drupal.org/project/entity
Entity API
Exposes Drupal resources (e.g. entities) as RESTful web services.
http://drupal.org/project/restws
‣ Provides only RESTful services.‣ Builds upon the Entity API, to provide support for all entity types out of the box.‣ Currently only CRUD operations supported‣ Currently JSON, XML and RDF/XML are available out of the box.‣ There are no "service endpoints" to configure as resources are just available at uniform paths like "node/1", "user/1".
RESTful Web Services
To obtain the JSON representation of an entity use your browser to visit:
http://yoursite.com/node/1.json orhttp://yoursite.com/user/1.json orhttp://yoursite.com/<entity type name>/<entity id>.json
Note: The module will respect your access permissions, so make sure you are logged in.
RESTful Web Services: Test it!
Supports full CRUD (Create, Read, Update, Delete) for resources:
‣ Create: HTTP PUT /<entity type name> (requires HTTP Content-Type header set to the MIME type of <format>)‣ Read: HTTP GET /<entity type name>/<entity id>.<format> or HTTP GET /<entity type name>/<entity id> (requires HTTP Accept header set to the MIME type of <format>)‣ Update: HTTP POST /<entity type name>/<entity id>.<format> or HTTP POST /<entity type name>/<entity id> (requires HTTP Content-Type header set to the MIME type of the posted format)‣ Delete: HTTP DELETE /<entity type name>/<entity id>
Note: The representation <format> can be json, xml etc.
RESTful Web Services: CRUD
‣ 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.
‣ The usual Drupal permission system is respected, thus permissions are checked for the logged in user account of the received requests.
RESTful Web Services: Auth and Perms
Connector: REST Client
Connector: Example (webform hook)
Connector: Example (response)
ServiceRequester
ServiceProvider
REST
Pamm Travel(Drupal 6)
Tikal(Drupal 7)
Case Study
ServiceRequester
ServiceProvider
REST
Intersos(Drupal 6)
Tikal(Drupal 7)
Case Study
Luca Corbo (lucor)[email protected]
@lucacorbo
Daniele Piaggesi (g0blin)[email protected]
@g0blin79
http://bmeme.com
Questions?