Python : APIs

De Justine's wiki
Version datée du 8 juillet 2019 à 21:46 par Justine (discussion | contributions) (Page créée avec « =Sources= * [https://medium.com/quick-code/absolute-beginners-guide-to-slaying-apis-using-python-7b380dc82236 Un tutoriel] * [https://2.python-requests.org//en/master/ Le... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Sources

API : Application Programming Interface

Ou, en francais, interface programmatique. Pour le définir simplement, il s'agit d'un intermédiaire. L'API permet de faire le lien avec un système par son interface, afin d'obtenir facilement ce dont on a besoin. Nous faisons une requête, l'API interroge une application et nous apporte une réponse.

Les APIs sont utiles car elles sont facile d'accès, et permettent au système dont elle sont dépendantes d'évoluer sans que l'on ait à faire évoluer notre code.

C'est parti

Module requests

Le module Python nommé requests sert, comme son slogan l'indique ("HTTP for humans") d'effectuer simplement des requêtes HTTP.Ce module est vraiment simple d'accès, comme le montre le code suivant extrait du site :

>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json; charset=utf8'
>>> r.encoding
'utf-8'
>>> r.text
u'{"type":"User"...'
>>> r.json()
{u'private_gists': 419, u'total_private_repos': 77, ...}

Nous allons ici utiliser ce module.

Une API simple

Nous allons ici utiliser l'API de Open Notify, qui est une API servant les données de la NASA. Cool !

Le code

#! /usr/bin/env python3
# encoding: utf-8

###Code d'exemple, servant à apprendre les APIs.

import requests


#Nous commencons par un simple GET
request = requests.get('http://api.open-notify.org')
print(request.text)

'''
Ce code nous renvoie juste le contenu de la page : en effet, nous n'aurons des objetgs précis que si nous ne demandons précisément celui-ci (le bon "end point"). La plupart du temps, nous aurons du JSON en retour (qui est toujours un bon moyen d'organiser des informations). En plus du contenu, nous avons le code de retour.
'''

print(request.status_code) #200 si tout va bien :)

'''
Nous pouvons facilement avoir une erreur 404.
'''

request2 = requests.get("http://api.open-notify.org/nimportequoi")
print(request2.status_code)


'''     Un exemple pratique
Open-notify nous donne plusieurs endpoints pour accéder aux données de la NASA. /iss-now.json nous permet de savoir où est l'ISS; /iss-pass.json à quel moment l'ISS passerait au-dessus de notre tête. Nous allons ici utiliser /astros.json, qui nous donne le nom des personnes actuellement dans l'espace (les veinards...).
'''

astronautes = requests.get('http://api.open-notify.org/astros.json')
print(astronautes.text)

#On récupère nos astronautes suiviss du message "success". 

'''     Du JSON lisible?
Le module requests possède une méthode pour décoder le JSON. On av pouvoir transformer ça en dictionnaire !
'''

astronautes_json = astronautes.json()
print(astronautes_json)

#On peut imprimer tout ça un peu mieux :
print("\n\nNombre de personnes dans l'espace", astronautes_json['number'])

for a in astronautes_json['people']:
    print(a['name'])