2. 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?
3. Web services
SOAP,
Service XML-RPC,
Service
Requester REST, etc... Provider
5. Why REST?
‣ Use standard HTTP (simple client and simple API)
‣ Multiple data formats (JSON, XML, etc...)
‣ Performance and scalability (Cacheable)
6. The bricks
Connector REST RESTws
Drupal 6
or Entity API
Drupal 7
Service Drupal 7
Requester
Service
Provider
7. Entity API
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
8. RESTful Web Services
Exposes Drupal resources (e.g. entities) as RESTful web services.
‣ 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".
http://drupal.org/project/restws
9. RESTful Web Services: Test it!
To obtain the JSON representation of an entity use your
browser to visit:
http://yoursite.com/node/1.json or
http://yoursite.com/user/1.json or
http://yoursite.com/<entity type name>/<entity id>.json
Note: The module will respect your access permissions, so make sure you are logged in.
10. RESTful Web Services: CRUD
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.
11. RESTful Web Services: Auth and Perms
can be achieved via separate modules, maybe making use of
‣ Authentication
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.
‣ Theusual Drupal permission system is respected, thus permissions are
checked for the logged in user account of the received requests.