How to use curl to test a REST API with a beautiful JSON indentation


How to get indented JSON with curl output

You need to install simplejson Python module in your environment, or python-simplejson.

curl [options] url | python -msimplejson.tool

An example with github APIv3

curl -s -H "Content-Type: application/json" -X GET \
     "https://api.github.com/repos/collective/collective.ckeditor" \
     | python -msimplejson.tool

How to display response headers and API errors with the JSON indentation

This command line have two problems :

  1. You cannot display response HTTP headers because it breaks simplejson parsing
  2. If you have an error with a request and you don’t know how to debug it.

You need to add two more options to push header response and error message in stderr: -S and -D /dev/stderr. Now you can test your API with all informations in one command:

curl -s -S -D /dev/stderr -u user:password \
     -H "Content-Type: application/json" -X GET \
     "http://myapi/v1/test/"

From curl manual:

  • -s no progress bar; stats report or errors are dislayed
  • -S display errors if -s is enable
  • -D dump the header in a file; here stderr to make them not interfer with json indentation
  • -u user and password for Basic HTTP Authentication
  • -H add header in the outgoing request
  • -X HTTP Command to launch. If you’re using Basic HTTP Authentication you must use -X GET

If someone have tip to add pygment coloration in json and headers I will be glad to share the ownership of this article.

Publicités

Installer et tester Django en 10 minutes sur une Ubuntu 9.10


J’ai trouvé une petite application web qui m’intéresse pour le site de l’AFPY : un éditeur de restructured text écrit pour Django. N’ayant jamais utilisé Django j’ai essayé de trouver une documentation pour installer et tester tout ça avec Ubuntu. Une recherche sur le moteur de recherche Exalead m’a permis de trouver la page de référence :

Django on Apache with mod_python

Seulement une page de texte pour une installation réussie… ou presque. Cette page a été mise à jour avant la sortie de la dernière mouture d’Ubuntu et quelques réglages ne fonctionnent plus.

Installation

Le module contenant les exemples a été déplacé dans python-django-doc :

sudo apt-get install libapache2-mod-python python-django python-django-doc
sudo vim /etc/apache2/sites-available/django-example

Configuration

Dans ce fichier vierge copier le texte suivant :

<Location "/django">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    PythonDebug On
    PythonPath "['/usr/share/doc/python-django-doc'] + sys.path"
    SetEnv DJANGO_SETTINGS_MODULE examples.settings
</Location>

Personnalisation

Maintenant qu’Apache est configuré il faut modifier le fichier examples.urls pour le pas polluer la page d’accueil d’apache.

sudo vim /usr/share/doc/python-django-doc/examples/urls.py

En rajoutant django/ au début des expressions de correspondances nous n’interceptons plus la page d’accueil d’Apache :

from django.conf.urls.defaults import *

urlpatterns = patterns('',
    (r'^django/$', 'examples.views.index'),
    (r'^django/hello/', include('examples.hello.urls')),
)

Il ne reste plus qu’à activer notre configuration à la mode debian :

sudo a2ensite django-example
sudo /etc/init.d/apache2 reload

Votre site de test Django est disponible et tout cela ne vous a pas pris 10 minutes : http://localhost/django

Voilà qui est fait… il ne me reste plus qu’à regarder de plus près comment fonctionne Django. 🙂