RESTful Web Services in Drupal7Presentation Transcript
RESTful Web Services in Drupal 7
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?
Web services SOAP, Service XML-RPC, Service Requester REST, etc... Provider
Web services with Drupal REST Service Service Requester Provider
Why REST?‣ Use standard HTTP (simple client and simple API)‣ Multiple data formats (JSON, XML, etc...)‣ Performance and scalability (Cacheable)
The bricks Connector REST RESTws Drupal 6 or Entity API Drupal 7 Service Drupal 7 Requester Service Provider
Entity APIThis module extends the entity API of Drupalcore in order to provide a uniﬁed way todeal with entities and their properties.Additionally, it provides an entity CRUDcontroller, which helps simplifying thecreation of new entity types.http://drupal.org/project/entity
RESTful Web ServicesExposes 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 thebox.‣ Currently only CRUD operations supported‣ Currently JSON, XML and RDF/XML are available out of the box.‣ There are no "service endpoints" to conﬁgure as resources are just availableat uniform paths like "node/1", "user/1".http://drupal.org/project/restws
RESTful Web Services: Test it!To obtain the JSON representation of an entity use yourbrowser to visit:http://yoursite.com/node/1.json orhttp://yoursite.com/user/1.json orhttp://yoursite.com/<entity type name>/<entity id>.jsonNote: The module will respect your access permissions, so make sure you are logged in.
RESTful Web Services: CRUDSupports 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: Auth and Perms can be achieved via separate modules, maybe making use of‣ Authenticationthe 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 providedvia the usual HTTP headers.‣ Theusual Drupal permission system is respected, thus permissions arechecked for the logged in user account of the received requests.
Connector: REST Client
Connector: Example (webform hook)
Connector: Example (response)
Case Study REST Pamm Travel Tikal (Drupal 6) (Drupal 7) Service Service Requester Provider
Case Study REST Intersos Tikal (Drupal 6) (Drupal 7) Service Service Requester Provider