Slide 1

Slide 1 text

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 …

Slide 14

Slide 14 text

Request & Response Formats ‣ Response: JSON, XML, JSONp, YAML, etc. ! ‣ Request: application/json, application/xml, multipart/ form-data

Slide 15

Slide 15 text

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!

Slide 24

Slide 24 text

Chrome REST Console Plugin http://lb.cm/rest-console

Slide 25

Slide 25 text

The Future? Drupal 8 has a built in REST server! ! Try it now with REST WS in contrib.

Slide 26

Slide 26 text

Review ‣ Web services allow access to your applications data and actions. ‣ Services module for Drupal 7: • Easy, extensible, and flexible

Slide 27

Slide 27 text

Thanks! @eojthebrave ! http://lb.cm/acquia-servicesmodule