build a restfull app using drupal

59
MAY 29 & 30, 2014 Barcelona @alvar0hurtad0 Drupal’s API

Upload: alvaro-j-hurtado-villegas

Post on 08-May-2015

257 views

Category:

Internet


0 download

DESCRIPTION

Presentation about how to build an API for your drupal CMS

TRANSCRIPT

Page 1: Build a Restfull app using drupal

MAY 29 & 30, 2014 Barcelona

@alvar0hurtad0

Drupal’s API

Page 2: Build a Restfull app using drupal
Page 3: Build a Restfull app using drupal

SO

Page 4: Build a Restfull app using drupal

SO

Page 5: Build a Restfull app using drupal

SO

Page 6: Build a Restfull app using drupal

SO +18

Page 7: Build a Restfull app using drupal
Page 8: Build a Restfull app using drupal

W

Page 9: Build a Restfull app using drupal
Page 10: Build a Restfull app using drupal

T

Page 11: Build a Restfull app using drupal

Drupal sites

Dries Buytaert March 2012

Page 12: Build a Restfull app using drupal

~7%

CMS SITES

Dries Buytaert March 2012

Page 13: Build a Restfull app using drupal

30%WEB SITES

Dries Buytaert March 2012

Page 14: Build a Restfull app using drupal

launch

top

deprecated

Page 15: Build a Restfull app using drupal

T

launch

top

deprecated

Page 16: Build a Restfull app using drupal

T

launch

top

deprecated

Page 17: Build a Restfull app using drupal

T

launch

top

deprecated

Page 18: Build a Restfull app using drupal

30%WEB SITES

Dries Buytaert March 2012

Page 19: Build a Restfull app using drupal

Dries Buytaert March 2012

Page 20: Build a Restfull app using drupal
Page 21: Build a Restfull app using drupal

7 8

Page 22: Build a Restfull app using drupal

7 8

IM

Page 23: Build a Restfull app using drupal

7 8

IM

• MULTILINGUAL

• UX/ADMINISTRATION EXPERIENCE

• MOBILE FRIENDLY

• CONFIGURATION MANAGEMENT

• WEB SERVICES

Page 24: Build a Restfull app using drupal

Photo: Carlos Francisco Peña

Page 25: Build a Restfull app using drupal

Photo: Carlos Francisco Peña

D

Page 26: Build a Restfull app using drupal

Photo: Carlos Francisco Peña

D

• LAYOUT CLICK BY CLICK

• DATA MODEL CLICK BY CLICK

• DATABASE QUERYS CLICK BY CLICK

• TRIGGERS AND ACTIONS …

• USER PERMISSIONS …

• WEB SERVICES CLICK BY CLICK

Page 27: Build a Restfull app using drupal

Photo: Carlos Francisco Peña

DATA MODEL

Page 28: Build a Restfull app using drupal

Photo: Carlos Francisco Peña

DATA MODEL

Page 29: Build a Restfull app using drupal

Photo: Carlos Francisco Peña

DATA MODEL

Page 30: Build a Restfull app using drupal

Photo: Carlos Francisco Peña

DATA MODEL

CONTENT MODELING

• CONTENT TYPES

• COMMENTS

• USER PROFILES

• COMMERCE PRODUCTS

• ….

Page 31: Build a Restfull app using drupal

DATABASE QUERYS CLICK BY CLICK

Page 32: Build a Restfull app using drupal

DATABASE QUERYS CLICK BY CLICK

Page 33: Build a Restfull app using drupal

DATABASE QUERYS CLICK BY CLICK

Page 34: Build a Restfull app using drupal

DATABASE QUERYS CLICK BY CLICK

Page 35: Build a Restfull app using drupal

DATABASE QUERYS CLICK BY CLICK

Page 36: Build a Restfull app using drupal

USER PERMISSION CLICK BY CLICK

Page 37: Build a Restfull app using drupal

USER PERMISSION CLICK BY CLICK

Page 38: Build a Restfull app using drupal

USER PERMISSION CLICK BY CLICK

Page 39: Build a Restfull app using drupal

USER PERMISSION CLICK BY CLICK

Page 40: Build a Restfull app using drupal

REST SERVICES CLICK BY CLICK

Page 41: Build a Restfull app using drupal

REST SERVICES CLICK BY CLICK

Page 42: Build a Restfull app using drupal

REST SERVICES CLICK BY CLICK

Page 43: Build a Restfull app using drupal

SERVICES AUTHENTICATION

Page 44: Build a Restfull app using drupal

SERVICES AUTHENTICATION

IN CORE• HTTP basic authentication

• Cookie

Page 45: Build a Restfull app using drupal

SERVICES AUTHENTICATION

IN CORE• HTTP basic authentication

• Cookie

CONTRIBUTED MODULE

• Oauth

Page 46: Build a Restfull app using drupal

SHOW ME THE CODE

Page 47: Build a Restfull app using drupal

SHOW ME THE CODE

CURL

curl -H "Accept: application/hal+json" --request GET

http://drupal-8.localhost/node/1

Page 48: Build a Restfull app using drupal

SHOW ME THE CODE

CURL

curl -H "Accept: application/hal+json" --request GET

http://drupal-8.localhost/node/1

Guzzle

<?php

use Guzzle\Http\Client;

$client = new Client('http://drupal-8.localhost');

// If in a Drupal environment use the HTTP client service.

$client = Drupal::httpClient()->setBaseUrl('http://drupal-8.localhost');

$request = $client->get('node/1');

$request->addHeader('Accept', 'application/hal+json');

$response = $request->send()->json();

print_r($response);

?>

Page 49: Build a Restfull app using drupal

SHOW ME THE CODE

CURL

curl -H "Accept: application/hal+json" --request GET

http://drupal-8.localhost/node/1

Guzzle

<?php

use Guzzle\Http\Client;

$client = new Client('http://drupal-8.localhost');

// If in a Drupal environment use the HTTP client service.

$client = Drupal::httpClient()->setBaseUrl('http://drupal-8.localhost');

$request = $client->get('node/1');

$request->addHeader('Accept', 'application/hal+json');

$response = $request->send()->json();

print_r($response);

?>

CURL

curl --include --request POST

--user cleverFucker:secret

--header 'Content-type: application/hal+json' http://

drupal-8.localhost/entity/node

--data-binary '{"_links":{"type":{"href":"http://

drupal-8.localhost/rest/type/node/page"}}, "title":

[{"value":"APIdaysBNC"}]}'

Page 50: Build a Restfull app using drupal

SHOW ME THE CODE

CURL

curl -H "Accept: application/hal+json" --request GET

http://drupal-8.localhost/node/1

Guzzle

<?php

use Guzzle\Http\Client;

$client = new Client('http://drupal-8.localhost');

// If in a Drupal environment use the HTTP client service.

$client = Drupal::httpClient()->setBaseUrl('http://drupal-8.localhost');

$request = $client->get('node/1');

$request->addHeader('Accept', 'application/hal+json');

$response = $request->send()->json();

print_r($response);

?>

CURL

curl --include --request POST

--user cleverFucker:secret

--header 'Content-type: application/hal+json' http://

drupal-8.localhost/entity/node

--data-binary '{"_links":{"type":{"href":"http://

drupal-8.localhost/rest/type/node/page"}}, "title":

[{"value":"APIdaysBNC"}]}'

Guzzle (I)

<?php

use Guzzle\Http\Client;

$client = new Client('http://drupal-8.localhost');

$client = \Drupal::httpClient()->setBaseUrl('http://drupal-8.localhost');

$node = array(

'_links' => array(

'type' => array(

'href' => 'http://drupal-8.localhost/rest/type/node/page'

)

),

'title' => array(0 => array('value' => 'New node title')),

);

!

Page 51: Build a Restfull app using drupal

SHOW ME THE CODE

CURL

curl -H "Accept: application/hal+json" --request GET

http://drupal-8.localhost/node/1

Guzzle

<?php

use Guzzle\Http\Client;

$client = new Client('http://drupal-8.localhost');

// If in a Drupal environment use the HTTP client service.

$client = Drupal::httpClient()->setBaseUrl('http://drupal-8.localhost');

$request = $client->get('node/1');

$request->addHeader('Accept', 'application/hal+json');

$response = $request->send()->json();

print_r($response);

?>

CURL

curl --include --request POST

--user cleverFucker:secret

--header 'Content-type: application/hal+json' http://

drupal-8.localhost/entity/node

--data-binary '{"_links":{"type":{"href":"http://

drupal-8.localhost/rest/type/node/page"}}, "title":

[{"value":"APIdaysBNC"}]}'

Guzzle (I)

<?php

use Guzzle\Http\Client;

$client = new Client('http://drupal-8.localhost');

$client = \Drupal::httpClient()->setBaseUrl('http://drupal-8.localhost');

$node = array(

'_links' => array(

'type' => array(

'href' => 'http://drupal-8.localhost/rest/type/node/page'

)

),

'title' => array(0 => array('value' => 'New node title')),

);

!

Guzzle (II)

$data = json_encode($node);

$response = $client->post('entity/node', array(

'Content-type' => 'application/hal+json',

), $data)

// Username and password for HTTP Basic Authentication.

->setAuth('klausi', 'secret')

->send();

if ($response->getStatusCode() == 201) {

print 'Node creation successful!';

}

?>

Page 52: Build a Restfull app using drupal

SOAP?

Page 53: Build a Restfull app using drupal

SOAP?

Page 54: Build a Restfull app using drupal

SOAP?

Page 55: Build a Restfull app using drupal

QUESTIONS !!! ?¿? !!!

I’ve a question

Page 56: Build a Restfull app using drupal

ONE MORE THING

Page 57: Build a Restfull app using drupal
Page 58: Build a Restfull app using drupal
Page 59: Build a Restfull app using drupal

THANKS

Alvaro J. Hurtado Villegas www.twitter.com/aspgems

www.twitter.com/alvar0hurtad0