Tester une API REST avec votre navigateur ou avec curl

Pour tester notre API nous pouvons dans un premier temps utiliser l’extension Postman de Chrome ou l’extension RESTClient pour Firefox.

Avertissement

Attention à bien désactiver les proxys dans vos navigateurs si vous voulez utiliser ces extensions. Pour chrome on peut le lancer en ligne de commande avec l’option –no-proxy-server

Si on veut une solution en ligne de commande, curl permet de manipuler les différentes méthodes HTTP. La syntaxe n’est pas idéale mais on peut tester toutes les méthodes HTTP.

Avertissement

Si vous avez déclaré des variables d’environnement http_proxy ou https_proxy, il vaut mieux les désactiver pour que curl n’essaie pas de passer par un proxy ce qui serait problématique pour certaines de ces requêtes curl:

unset http_proxy
unset https_proxy

Pour tester un GET:

curl -i http://localhost/silex/api/v1/contact/2

ou si on utilise le module user_dir d’Apache.

curl -i http://localhost/~login/silex/api/v1/contact/2

Avertissement

Attention dans le cas ou on utilise user_dir, les réglages pour utiliser toutes les methodes du protocole HTTP/1.1 peuvent s’avérer délicats.

Notamment le fichier /etc/apache2/mods-available/userdir.conf doit être modifié comme suit (les user_dir sont dans www, syntaxe pour Apache > 2.2):

<IfModule mod_userdir.c>
    UserDir www
    UserDir disabled root

    <Directory /home/*/www>
            AllowOverride All
            Options MultiViews Indexes SymLinksIfOwnerMatch
            <Limit GET POST PUT DELETE OPTIONS>
                    Require all granted
            </Limit>
            <LimitExcept GET POST PUT DELETE OPTIONS>
                    Require all denied
            </LimitExcept>
    </Directory>
</IfModule>

et il faut aussi dans votre dossier sous voter user_dir (par exemple ~/www/silex ) avoir le .htaccess suivant:

<Limit GET POST DELETE PUT OPTIONS>
allow from all
</Limit>

FallbackResource /~roza/silex/index.php
RewriteBase /~roza/silex

Dans tous les cas, préciser si besoin dans votre php.ini ou un fichier équivalent:

always_populate_raw_post_data = -1

Pour tester un POST:

curl -i -H "Content-Type: application/json" -X POST
 -d '{"NOM":"Dalton", "PRENOM":"joe", "NAISSANCE":"2000-08-15", "VILLE":"Orleans"}' http://localhost/silex/api/contact

Test un PUT:

curl -i -H "Content-Type: application/json" -X PUT -d '{"done":true}' http://localhost/silex/api/contact/5

Test de DELETE:

curl -i -H "Content-Type: application/json" -X "DELETE"
http://localhost/silex/api/contact/7