Services Web
Services Web

John Samuel
CPE Lyon

Année: 2017-2018
Courriel: john(dot)samuel(at)cpe(dot)fr

Creative Commons License

Services Web

Objectifs

Services Web

URL rewriting

Installation d'apache

$ sudo apt install apache2 php7.0 libapache2-mod-php7.0

Activation de réécriture

$ sudo a2enmod rewrite
$ sudo service apache2 restart

URL Rewriting

Vérification

<?php
 phpinfo()
?>
screenshot of php mod_rewrite enabled

URL Rewriting

Configuration

Vérifier le fichier /etc/apache2/sites-available/000-default.conf

<Directory "/var/www/html">
 AllowOverride All
</Directory>

Redémarrer apache2

$ sudo service apache2 restart

URL Rewriting

Exemple

.htaccess

RewriteEngine on
RewriteRule ^test.html$ /index.php

URL Rewriting

Exemple

.htaccess

RewriteEngine on
RewriteRule "^.+.html$" /index.php

URL Rewriting

Exemple

.htaccess

RewriteEngine on
ErrorDocument 404 /404.php
RewriteRule "^.+.html$" /index.php
RewriteRule "^(.+)/index.php$" /index.php?lang=$1

URL Rewriting

Exemple

.htaccess

RewriteEngine on
RewriteRule "^.+.html$" /index.php
RewriteRule "^(.+)/index.php$" /index.php?lang=$1

Services Web

PHP

<?php
$language = "fr";
if($_GET["lang"]) {
$language = $_GET["lang"];
}

if($language == "en") {
echo "Hello!";
}
else if($language == "fr") {
echo "Bonjour!";
}
?>

REST

Services Web

Contraintes

Une architecture REST doit respecter les six contraintes suivantes

  1. un architecture client-serveur
  2. Un serveur sans état
  3. Avec cache
  4. À interface uniforme
  5. En couches
  6. Code à la demande (facultatif)

Services Web

Contraintes

À interface uniforme

  1. identification des ressources
  2. manipulation des ressources par des représentations (XML, JSON etc.)
  3. messages auto-descriptifs
  4. hypermédia comme moteur d'état de l'application

Services Web

Hypermédia en tant que moteur de l'état d'application

Un client REST n'a besoin d'aucune connaissance préalable sur la façon d'interagir avec une application ou un serveur particulier au-delà d'une compréhension générique de l'hypermédia.

Services Web

API Github (REST)

REST API of Github

Services Web

RESTful Services Web

Différents niveaux [2]

  1. Niveau 0: HTTP
  2. Niveau 1: Ressources
  3. Niveau 2: Verbs HTTP (GET, POST, PUT, DELETE)
  4. Niveau 3: Hypermedia

Services Web

Liste des codes HTTP

  1. 1xx - Information
  2. 2xx - Succès
  3. 3xx - Redirection
  4. 4xx - Erreur du client web
  5. 5xx - Erreur du serveur / du serveur d'application

Services Web

Liste des codes HTTP

Les codes les plus courants sont :

  1. 200 : succès de la requête ;
  2. 301 et 302 : redirection, respectivement permanente et temporaire ;
  3. 401 : utilisateur non authentifié ;
  4. 403 : accès refusé ;
  5. 404 : page non trouvée ;
  6. 500 et 503 : erreur serveur ;
  7. 504 : le serveur n'a pas répondu.

Conception et création d'API Restful

cURL

  1. client URL request library : « bibliothèque de requêtes aux URL pour les clients »
$ curl example.com

Conception et création d'API Restful

cURL: en-tête (header)

$ curl -I http://localhost/index.php

Sortie

HTTP/1.1 200 OK
Date: Thu, 26 Apr 2018 18:54:18 GMT
Server: Apache/2.4.18 (Ubuntu)
Content-Length: 14
Content-Type: text/html; charset=UTF-8

Conception et création d'API Restful

cURL: GET

$ curl http://localhost/index.php
$ curl -X GET http://localhost/index.php

Conception et création d'API Restful

cURL: POST

$ curl -X POST http://localhost/index.php
$ curl -X POST --data 'user:abc' http://localhost/index.php
$ curl -X POST -d @file.json http://localhost/index.php

Conception et création d'API Restful

cURL: PUT

$ curl -X PUT http://localhost/index.php
$ curl -X PUT --data '' http://localhost/index.php
$ curl -X PUT -d @file.json http://localhost/index.php

Conception et création d'API Restful

cURL: DELETE

$ curl -X DELETE http://localhost/index.php

Conception et création d'API Restful

methode HTTP

$_SERVER['REQUEST_METHOD']

Conception et création d'API Restful

PHP: récupération de paramétres

$data = json_decode(file_get_contents('php://input'), true);

Conception et création d'API Restful

PHP:

echo http_response_code(521);

Conception et création d'API Restful

Exemple

.htaccess

RewriteEngine on
ErrorDocument 404 /404.php
RewriteRule ^(.+)/$ /index.php?resource=$1
RewriteRule ^(.+)/(.+)$ /index.php?resource=$1&id=$2

Services Web

Références

  1. Rodríguez, Carlos, et al. REST APIs: a large-scale analysis of compliance with principles and best practices. International Conference on Web Engineering. Springer, Cham, 2016.
  2. Pautasso, Cesare. RESTful web services: principles, patterns, emerging technologies. Web Services Foundations. Springer, New York, NY, 2014. 31-51.
  3. Samuel, John, and Christophe Rey. Integration of Multiple Heterogeneous and Autonomous Web Services using Mediation Approach: Open Challenges. Journal on Advances in Theoretical and Applied Informatics 2.2 (2016): 38-46.

Services Web

Références