Building Web Services with Drupal 7
March 19th, 2014 - Joe Shindelar - @eojthebrave
!
http://lb.cm/acquia-servicesmodule
Slide 2
Slide 2 text
Hi, I’m Joe …
@eojthebrave
Lullabot / Drupalize.Me
Slide 3
Slide 3 text
Services & Drupal 7
http://lb.cm/acquia-servicesmodule
!
Drupalize.Me Series:
Building Web Services with Drupal 7
Slide 4
Slide 4 text
Lets GO!
‣ What are web services and why do I want one?
‣ Drupal 7 services module core concepts and features.
‣ How to test your new web service.
‣ The future.
Slide 5
Slide 5 text
What Are Web Services?
The W3C defines web service as: a software system designed to support
interoperable machine-to-machine interaction over a network.
API stands for Application Programmer Interface
API’s specify how software components should interact with one another.
APIs
Slide 6
Slide 6 text
A standardized, and documented way to access and
interact with your applications content and features.
Slide 7
Slide 7 text
Examples of Existing Web Services
‣ Twitter
‣ Netflix
‣ Amazon S3, EC2, etc.
‣ Yahoo weather API
‣ Flight tracking data
Slide 8
Slide 8 text
Why Web Services?
‣ Provide access for mobile devices (internet of things)
‣ Legacy integration
‣ Digital asset management system
‣ Partners who need/want your data - weather, MLS listing, etc.
‣ Social media
Slide 9
Slide 9 text
Services & Drupal 7
Services Module - 7.x-3.x
http://drupal.org/project/services
!
Drupal 7.x
Information is specific to Drupal 7 though applicable to
other versions as well.
Slide 10
Slide 10 text
/videos/theming-component
/api/v1/video/1381.json
Slide 11
Slide 11 text
Chunks vs. Blobs
It is easier for machines to understand structured
content like JSON or XML than a giant blob of text.
!
Drupal already stores data in structured chunks
(fields) making it an ideal backend for a data API.
VIDEO NODE
VIDEO ASSET
Slide 12
Slide 12 text
Drupal’s Data & Actions
Data
Nodes, users, comments, views, etc.
!
Actions
User login, node create, and trigger sending a
password reset email.
Slide 13
Slide 13 text
Server Types
Services allows many server formats.
!
‣ REST
‣ XML-RPC
‣ Soap
‣ AMF-PHP, and more …
Authentication
‣ Session Authentication
‣ OAuth Authentication
Pro Tip: Want to do API
keys? Use 2-legged OAuth.
Slide 16
Slide 16 text
Resources
‣ Provide basic CRUD support
for data objects.
‣ Provide additional actions.
‣ Map requests to PHP code
‣ Likely 1st place you’ll write
custom code.
Slide 17
Slide 17 text
Resource Definitions
‣ A URI
‣ Access control
‣ Callback function(s)
‣ Arguments & Paramaters
‣ services.services.api.php
Slide 18
Slide 18 text
Resource Documentation
Knowing what resources are available and especially
what arguments/parameters they accept can be tricky.
!
‣ Code is the canonical source.
‣ http://drupal.org/projet/services_tools module helps.
Slide 19
Slide 19 text
Services Endpoint(s)
Basic configuration for your sites web service API.
‣ Base URL, eg. api/v1.
‣ Server type.
‣ Request & response formats accepted.
‣ Authentication type.
‣ Resources enabled.
Slide 20
Slide 20 text
Views & Services
‣ http://drupal.org/project/services_views
!
‣ Provides a resource to expose existing views.
‣ Create new views and expose them as a resource.
Slide 21
Slide 21 text
Testing Your API
Request:
GET : http://example.com/resource/{ID}
Accept: application/json
!
Response:
HTTP 200 Ok
Content-type: application/json
{“message”: “Hello World!”}
Slide 22
Slide 22 text
Services Tools : https://drupal.org/project/services_tools
What to
Test?
Slide 23
Slide 23 text
cURL
‣ It’s not pretty but it is ubiquitous.
‣ http://curl.haxx.se/
curl --data '{"title":"hello world!","type":"page"}' --header
"Content-Type:application/json" http://localhost/demos/
services-7x/docroot/api/v1/node!