21
1 sur 21

Web services par l'exemple avec ruby

Embed Size (px)

DESCRIPTION

Présentation sur les web services et implémentation d'un service web en Ruby et Sinatra. Le code source se trouve sur Github https://github.com/fenicks/joke_server.

Citation preview

Page 1: Web services par l'exemple avec ruby

1 sur 21

Page 2: Web services par l'exemple avec ruby

Web Services Par l'exempleavec RubyChristian KakesaMOE/Ingénieur SI, RATP

2 sur 21

Page 3: Web services par l'exemple avec ruby

Web Service par l'exempleRESTons Simple

3 sur 21

Page 4: Web services par l'exemple avec ruby

Sommaire

Nous allons voir :

#webdayesgi

Qu'est-ce qu'un service web ?

Soap, qu'est-ce que c'est ?

REST, qu'est-ce que c'est ?

XML or JSON ?

Live coding : Implémenter un serveur de blagues avec Ruby

Échange sur la sécurisation d'un service web

·

·

·

·

·

·

4 sur 21

Page 5: Web services par l'exemple avec ruby

Web Service par l'exempleQu'est-ce qu'un service web

5 sur 21

Page 6: Web services par l'exemple avec ruby

Web Service par l'exempleQu'est-ce qu'un service web ?

#webdayesgi

Échange de données inter-application

Communication synchrone ou asynchrone

Usage des normes et protocoles ouverts (standards web)

·

·

·

6 sur 21

Page 7: Web services par l'exemple avec ruby

Web Service par l'exempleSoap, qu'est-ce que c'est ?

7 sur 21

Page 8: Web services par l'exemple avec ruby

Web Service par l'exempleSoap, qu'est-ce que c'est ?

#webdayesgi

SOAP pour Simple Object Access Protocol

Technologie ouverte basée sur XML : Envelope - Header - Body - Error

Norme de description en WSDL (Web Service Description Language)

Notion d'annuaire des services web avec UDDI (Universal DiscoveryDescription and Integration)

·

·

·

·

8 sur 21

Page 9: Web services par l'exemple avec ruby

Structure d'un message SOAP

#webdayesgi

<?xml version="1.0"?><soap:Envelopexmlns:soap="http://www.w3.org/2001/12/soap-envelope"soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Header>...</soap:Header>

<soap:Body>...<soap:Fault>

...</soap:Fault>

</soap:Body>

</soap:Envelope>

9 sur 21

Page 10: Web services par l'exemple avec ruby

Une requête SOAP

#webdayesgi

<?xml version="1.0"?><soap:Envelopexmlns:soap="http://www.w3.org/2001/12/soap-envelope"soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Body xmlns:m="http://www.example.org/stock"><m:GetStockPrice><m:StockName>IBM</m:StockName>

</m:GetStockPrice></soap:Body>

</soap:Envelope>

10 sur 21

Page 11: Web services par l'exemple avec ruby

Une réponse SOAP

#webdayesgi

<?xml version="1.0"?><soap:Envelopexmlns:soap="http://www.w3.org/2001/12/soap-envelope"soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Body xmlns:m="http://www.example.org/stock"><m:GetStockPriceResponse><m:Price>34.5</m:Price>

</m:GetStockPriceResponse></soap:Body>

</soap:Envelope>

11 sur 21

Page 12: Web services par l'exemple avec ruby

Web Service par l'exempleREST, qu'est-ce que c'est ?

12 sur 21

Page 13: Web services par l'exemple avec ruby

Web Service par l'exempleREST, qu'est-ce que c'est ?

#webdayesgi

REST pour Representational State Transfer

Envoi et reception de message entre client et serveur

Représentation sous forme de ressource. Ex. : un Utilisateur est représentéen JSON ou XML

S'appuie sur le protocole HTTP (Interface HTTP) : codes HTTP, methodes HTTP,etc.

·

·

·

·

13 sur 21

Page 14: Web services par l'exemple avec ruby

Web Service par l'exempleXML vs JSON

14 sur 21

Page 15: Web services par l'exemple avec ruby

XML or JSON ?XML JSON

Verbosity More Less

Complexity More Less

Validty DTDs and XSDs widely used JSON Schema not widely used

Prog. InterfaceClunkyImpedence mismatch

More direct

QueryingXPathXQueryXSLT

JSON PathJSON QueryJAQL

#webdayesgi

source: Coursera, cours de Jennifer Widom (Relational algebra)

15 sur 21

Page 16: Web services par l'exemple avec ruby

Web Service par l'exempleLive coding : Implémenter un serveur de blagues avec Ruby

16 sur 21

Page 17: Web services par l'exemple avec ruby

Live codingRuby & Sinatra (DSL)

#webdayesgi

Ruby : https://www.ruby-lang.org

Sinatra : http://www.sinatrarb.com

·

·

17 sur 21

Page 18: Web services par l'exemple avec ruby

Web Service par l'exempleÉchange sur la sécurisation d'un service web

18 sur 21

Page 19: Web services par l'exemple avec ruby

Échange sur la sécurisation d'un service web

#webdayesgi

TLS (SSL) : Transport Layer Security (Secure Sockets Layer)

CSRF (Cross-Site Request Forgery)

CORS (Cross-origin resource sharing)

Authentification : apiKey - login/mot de passe - Oauth - etc.

·

·

·

·

19 sur 21

Page 20: Web services par l'exemple avec ruby

<Merci !>/meg+ kiq.li/4eZtwitter @christiankakesawww www.kakesa.netgithub github.com/fenicks

20 sur 21

Page 21: Web services par l'exemple avec ruby

21 sur 21