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
Top Related