Top Banner
Building Web Services with Drupal 7 March 19th, 2014 - Joe Shindelar - @eojthebrave http://lb.cm/acquia-servicesmodule
27

How to Build APIs with the Services Module

May 07, 2015

Download

Technology

Acquia
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: How to Build APIs with the Services Module

Building Web Services with Drupal 7March 19th, 2014 - Joe Shindelar - @eojthebrave !

http://lb.cm/acquia-servicesmodule

Page 2: How to Build APIs with the Services Module

Hi, I’m Joe …

@eojthebraveLullabot / Drupalize.Me

Page 3: How to Build APIs with the Services Module

Services & Drupal 7http://lb.cm/acquia-servicesmodule !

Drupalize.Me Series: Building Web Services with Drupal 7

Page 4: How to Build APIs with the Services Module

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.

Page 5: How to Build APIs with the Services Module

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

Page 6: How to Build APIs with the Services Module

A standardized, and documented way to access and interact with your applications content and features.

Page 7: How to Build APIs with the Services Module

Examples of Existing Web Services‣ Twitter ‣ Netflix ‣ Amazon S3, EC2, etc. ‣ Yahoo weather API ‣ Flight tracking data

Page 8: How to Build APIs with the Services Module

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

Page 9: How to Build APIs with the Services Module

Services & Drupal 7Services 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.

Page 10: How to Build APIs with the Services Module

/videos/theming-component

/api/v1/video/1381.json

Page 11: How to Build APIs with the Services Module

Chunks vs. BlobsIt 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

Page 12: How to Build APIs with the Services Module

Drupal’s Data & ActionsData Nodes, users, comments, views, etc. !

Actions User login, node create, and trigger sending a password reset email.

Page 13: How to Build APIs with the Services Module

Server TypesServices allows many server formats.

!

‣ REST ‣ XML-RPC ‣ Soap ‣ AMF-PHP, and more …

Page 14: How to Build APIs with the Services Module

Request & Response Formats‣ Response: JSON, XML, JSONp, YAML, etc.

!

‣ Request: application/json, application/xml, multipart/form-data

Page 15: How to Build APIs with the Services Module

Authentication‣ Session Authentication ‣ OAuth Authentication

Pro Tip: Want to do API keys? Use 2-legged OAuth.

Page 16: How to Build APIs with the Services Module

Resources‣ Provide basic CRUD support

for data objects. ‣ Provide additional actions. ‣ Map requests to PHP code ‣ Likely 1st place you’ll write

custom code.

Page 17: How to Build APIs with the Services Module

Resource Definitions‣ A URI ‣ Access control ‣ Callback function(s) ‣ Arguments & Paramaters ‣ services.services.api.php

Page 18: How to Build APIs with the Services Module

Resource DocumentationKnowing 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.

Page 19: How to Build APIs with the Services Module

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.

Page 20: How to Build APIs with the Services Module

Views & Services‣ http://drupal.org/project/services_views

!

‣ Provides a resource to expose existing views. ‣ Create new views and expose them as a resource.

Page 21: How to Build APIs with the Services Module

Testing Your APIRequest: GET : http://example.com/resource/{ID} Accept: application/json !

Response: HTTP 200 Ok Content-type: application/json {“message”: “Hello World!”}

Page 22: How to Build APIs with the Services Module

Services Tools : https://drupal.org/project/services_tools

What to Test?

Page 23: How to Build APIs with the Services Module

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!

Page 24: How to Build APIs with the Services Module

Chrome REST Console Pluginhttp://lb.cm/rest-console

Page 25: How to Build APIs with the Services Module

The Future?Drupal 8 has a built in REST server! !

Try it now with REST WS in contrib.

Page 26: How to Build APIs with the Services Module

Review‣ Web services allow access to your applications data

and actions. ‣ Services module for Drupal 7:

• Easy, extensible, and flexible

Page 27: How to Build APIs with the Services Module

Thanks!@eojthebrave

!

http://lb.cm/acquia-servicesmodule