how to build apis with the services module

Post on 07-May-2015

819 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

http://lb.cm/acquia-servicesmodule

Hi, I’m Joe …

@eojthebraveLullabot / Drupalize.Me

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

Drupalize.Me Series: Building Web Services with Drupal 7

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.

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

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

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

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

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.

/videos/theming-component

/api/v1/video/1381.json

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

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

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

Server TypesServices allows many server formats.

!

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

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

!

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

Authentication‣ Session Authentication ‣ OAuth Authentication

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

Resources‣ Provide basic CRUD support

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

custom code.

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

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.

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.

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

!

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

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

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

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

What to Test?

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!

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

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

Try it now with REST WS in contrib.

Review‣ Web services allow access to your applications data

and actions. ‣ Services module for Drupal 7:

• Easy, extensible, and flexible

Thanks!@eojthebrave

!

http://lb.cm/acquia-servicesmodule

top related