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.
4. 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
5. Web Service par l'exemple
Qu'est-ce qu'un service web
5 sur 21
6. Web Service par l'exemple
Qu'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
7. Web Service par l'exemple
Soap, qu'est-ce que c'est ?
7 sur 21
8. Web Service par l'exemple
Soap, 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 Discovery
Description and Integration)
·
·
·
·
8 sur 21
10. Une requête SOAP
#webdayesgi
<?xml version="1.0"?>
<soap:Envelope
xmlns: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
11. Une réponse SOAP
#webdayesgi
<?xml version="1.0"?>
<soap:Envelope
xmlns: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
12. Web Service par l'exemple
REST, qu'est-ce que c'est ?
12 sur 21
13. Web Service par l'exemple
REST, 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
15. XML or JSON ?
XML JSON
Verbosity More Less
Complexity More Less
Validty DTDs and XSDs widely used JSON Schema not widely used
Prog. Interface
Clunky
Impedence mismatch
More direct
Querying
XPath
XQuery
XSLT
JSON Path
JSON Query
JAQL
#webdayesgi
source: Coursera, cours de Jennifer Widom (Relational algebra)
15 sur 21
16. Web Service par l'exemple
Live coding : Implémenter un serveur de blagues avec Ruby
16 sur 21
17. Live coding
Ruby & Sinatra (DSL)
#webdayesgi
Ruby : https://www.ruby-lang.org
Sinatra : http://www.sinatrarb.com
·
·
17 sur 21
18. Web Service par l'exemple
Échange sur la sécurisation d'un service web
18 sur 21
19. É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