web services par l'exemple avec ruby
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.TRANSCRIPT
1 sur 21
Web Services Par l'exempleavec RubyChristian KakesaMOE/Ingénieur SI, RATP
2 sur 21
Web Service par l'exempleRESTons Simple
3 sur 21
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
Web Service par l'exempleQu'est-ce qu'un service web
5 sur 21
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
Web Service par l'exempleSoap, qu'est-ce que c'est ?
7 sur 21
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
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
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
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
Web Service par l'exempleREST, qu'est-ce que c'est ?
12 sur 21
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
Web Service par l'exempleXML vs JSON
14 sur 21
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
Web Service par l'exempleLive coding : Implémenter un serveur de blagues avec Ruby
16 sur 21
Live codingRuby & Sinatra (DSL)
#webdayesgi
Ruby : https://www.ruby-lang.org
Sinatra : http://www.sinatrarb.com
·
·
17 sur 21
Web Service par l'exempleÉchange sur la sécurisation d'un service web
18 sur 21
É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
<Merci !>/meg+ kiq.li/4eZtwitter @christiankakesawww www.kakesa.netgithub github.com/fenicks
20 sur 21
21 sur 21