RESTful application with Drupal 8 Concept / Overview / Demonstration / Happyness
Introduction Digital agency established since 2008 in Mauritius Recognized as one of the most expert offshore web agencies in Drupal More than 150 projects in Drupal
Introduction Technical Director at Esokia 10 years of experience in PHP 7 years of experience in Drupal
What is Drupal? Free, community-built website development tool Modular and extensible content management Open source Built on PHP Created by Dries Buytaert First release in January 2001
Drupal now Drupal 8 released on November, 2015 (approx.) Big architectural changes Built with
About the session A little warm-up An overview about Drupal 8 and this new core capability to build RESTful application. From a basic utilisation to a more complexe use case, we will made a global overview of possible exploitation of Drupal 8 RESTful aspect.
Warm-up Drupal 8 is the next main version of Drupal’s CMS, a quick overview and presentation will be made for exposing the concept. On the next topic, we will see what is REST and key concept about a RESTful application, with basic exemple and application. A more advanced concept will be see in the next topic, with a presentation about an utilisation of JavaScript to use a Drupal 8 RESTful application and a more complex example with a NodeJS / ExpressJS application.
RESTful? REpresentational State Transfert An application that implements the REST architectural style is called a RESTful application
REST Principle Communicate over HTTP protocol using HTTP verbs that web browsers use between client and server GET PUT DELETE POST PATCH etc
REST Implementation - Two ways GET → Retreive something POST → Create something DELETE → Delete something PATCH → Update something GET → Retrieve something POST → Update something DELETE → Delete something PUT → Create something
What is REST in Drupal? Make possible for other applications to read and update information on your site via the Web. REST is one of a number of different ways of making it available. In contrast to other techniques such as SOAP or XML-RPC, REST encourages developers to rely on HTTP methods (such as GET and POST) to operate on "resources" (data managed by Drupal).
RESTful Web Service API The RESTful Web Services API is new in Drupal 8. For each REST resource, you can specify the supported verbs (i.e. GET, POST…), and for each verb, you can specify the serialization formats & authentication mechanisms. In Drupal 8, there is a single central location to configure all REST resources that a site exposes: rest.settings.yml. A permission is generated for every resource + verb, users need this permission to be able to interact with this REST resource.
GET For reading content entities. Read-only method. Considered as a safe method. Results are automatically cached.
POST For creating content entities. Some entities need a _links entry to the user and / or to the referenced entity. Never POST a UUID (or node ID/comment ID/…) as you create a new entity. Considered as an unsafe method. Need a CSRF Token.
PATCH For updading content entities. When PATCHing resources, only send the changes. Considered as an unsafe method. Need a CSRF Token.
DELETE For deleting content entities. Content-type header not necessary (no request body). Considered as an unsafe method. Need a CSRF Token.
Basic Example Read and write data from your Drupal installation with a couple of modules. Requirements: RESTful Web Services (rest) Serialization (serialization) Hypertext Application Language (hal) HTTP Basic Authentication (basic_auth)
Core module to enable
REST UI interface
List of permissions for using REST
Basic example in action
Little demonstration?
JS + D8 RESTful Web Services Can be use with every kind of entities in Drupal 8 if they are exposed for REST. Just implement an HTTP request and let’s go. Easy to separate client and server. Improve the client code’s portability. Servers can be simpler and more scalable.
JQuery example JQuery already loaded in Drupal (JQuery 1.7) Every Drupal 8 project can be easily RESTful with client-server separation GET / POST /PATCH / DELETE still available
Advanced Example Building a timesheet application in Drupal 8 with a separated front-end. What we need? A Drupal 8 installation with RESTful Web Services API Something funny like NodeJS ExpressJS or a similar framework
Requirements LAMP Stack for the backend Linux Apache MySQL PHP
Requirements MEAN Stack for the frontend MongoDB ExpressJS AngularJS NodeJS
Requirements RESTful Web Services Views Field UI (nice to have) REST UI (nice to have) Drupal 8 installation
Live conding?
LAMP Stack Be efficient: Google Cloud + Bitnami is a good combo! :-D Good combo is a pre-installed Drupal’s LAMP Stack.
MEAN Stack Be efficient: Google Cloud + Bitnami is a good combo! :-D (really!)
NodeJS Locally
ExpressJS Locally
ExpressJS locally
Let’s try Drupal: ● Content type ● Views ● Permissions Remember to configure the view for the REST Export!
Let’s try ExpressJS ● Don’t forget to npm init before! ● And npm install express --save for dependencies ● You can add a template engine, add route with parameters, etc
Drupal <-> NodeJS Need to install NPM Request module Load it in your Express App Interact with Drupal!
Questions?
Thank you!

RESTful application with Drupal 8

  • 1.
    RESTful application with Drupal8 Concept / Overview / Demonstration / Happyness
  • 2.
    Introduction Digital agency establishedsince 2008 in Mauritius Recognized as one of the most expert offshore web agencies in Drupal More than 150 projects in Drupal
  • 3.
    Introduction Technical Director atEsokia 10 years of experience in PHP 7 years of experience in Drupal
  • 4.
    What is Drupal? Free,community-built website development tool Modular and extensible content management Open source Built on PHP Created by Dries Buytaert First release in January 2001
  • 5.
    Drupal now Drupal 8released on November, 2015 (approx.) Big architectural changes Built with
  • 6.
    About the session A littlewarm-up An overview about Drupal 8 and this new core capability to build RESTful application. From a basic utilisation to a more complexe use case, we will made a global overview of possible exploitation of Drupal 8 RESTful aspect.
  • 7.
    Warm-up Drupal 8 isthe next main version of Drupal’s CMS, a quick overview and presentation will be made for exposing the concept. On the next topic, we will see what is REST and key concept about a RESTful application, with basic exemple and application. A more advanced concept will be see in the next topic, with a presentation about an utilisation of JavaScript to use a Drupal 8 RESTful application and a more complex example with a NodeJS / ExpressJS application.
  • 8.
    RESTful? REpresentational State Transfert An application thatimplements the REST architectural style is called a RESTful application
  • 9.
    REST Principle Communicate overHTTP protocol using HTTP verbs that web browsers use between client and server GET PUT DELETE POST PATCH etc
  • 10.
    REST Implementation -Two ways GET → Retreive something POST → Create something DELETE → Delete something PATCH → Update something GET → Retrieve something POST → Update something DELETE → Delete something PUT → Create something
  • 11.
    What is RESTin Drupal? Make possible for other applications to read and update information on your site via the Web. REST is one of a number of different ways of making it available. In contrast to other techniques such as SOAP or XML-RPC, REST encourages developers to rely on HTTP methods (such as GET and POST) to operate on "resources" (data managed by Drupal).
  • 12.
    RESTful Web ServiceAPI The RESTful Web Services API is new in Drupal 8. For each REST resource, you can specify the supported verbs (i.e. GET, POST…), and for each verb, you can specify the serialization formats & authentication mechanisms. In Drupal 8, there is a single central location to configure all REST resources that a site exposes: rest.settings.yml. A permission is generated for every resource + verb, users need this permission to be able to interact with this REST resource.
  • 13.
    GET For reading content entities. Read-onlymethod. Considered as a safe method. Results are automatically cached.
  • 14.
    POST For creating content entities. Someentities need a _links entry to the user and / or to the referenced entity. Never POST a UUID (or node ID/comment ID/…) as you create a new entity. Considered as an unsafe method. Need a CSRF Token.
  • 15.
    PATCH For updading content entities. WhenPATCHing resources, only send the changes. Considered as an unsafe method. Need a CSRF Token.
  • 16.
    DELETE For deleting content entities. Content-typeheader not necessary (no request body). Considered as an unsafe method. Need a CSRF Token.
  • 17.
    Basic Example Read andwrite data from your Drupal installation with a couple of modules. Requirements: RESTful Web Services (rest) Serialization (serialization) Hypertext Application Language (hal) HTTP Basic Authentication (basic_auth)
  • 18.
  • 19.
  • 20.
    List of permissionsfor using REST
  • 21.
  • 22.
  • 23.
    JS + D8RESTful Web Services Can be use with every kind of entities in Drupal 8 if they are exposed for REST. Just implement an HTTP request and let’s go. Easy to separate client and server. Improve the client code’s portability. Servers can be simpler and more scalable.
  • 24.
    JQuery example JQuery alreadyloaded in Drupal (JQuery 1.7) Every Drupal 8 project can be easily RESTful with client-server separation GET / POST /PATCH / DELETE still available
  • 25.
    Advanced Example Building atimesheet application in Drupal 8 with a separated front-end. What we need? A Drupal 8 installation with RESTful Web Services API Something funny like NodeJS ExpressJS or a similar framework
  • 26.
    Requirements LAMP Stack forthe backend Linux Apache MySQL PHP
  • 27.
    Requirements MEAN Stack forthe frontend MongoDB ExpressJS AngularJS NodeJS
  • 28.
    Requirements RESTful Web Services Views FieldUI (nice to have) REST UI (nice to have) Drupal 8 installation
  • 29.
  • 30.
    LAMP Stack Be efficient:Google Cloud + Bitnami is a good combo! :-D Good combo is a pre-installed Drupal’s LAMP Stack.
  • 31.
    MEAN Stack Be efficient:Google Cloud + Bitnami is a good combo! :-D (really!)
  • 32.
  • 33.
  • 34.
  • 35.
    Let’s try Drupal: ● Contenttype ● Views ● Permissions Remember to configure the view for the REST Export!
  • 36.
    Let’s try ExpressJS ● Don’tforget to npm init before! ● And npm install express --save for dependencies ● You can add a template engine, add route with parameters, etc
  • 37.
    Drupal <-> NodeJS Needto install NPM Request module Load it in your Express App Interact with Drupal!
  • 38.
  • 39.