Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| technique:python:api_python [2020/07/05 15:58] – francoisa | technique:python:api_python [2024/04/02 15:08] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== API en Python ====== | + | **Cette page est obsolète. Veuillez accéder au contenu à son nouvel emplacement : [[https://bibliotech.cemea.org/books/outils-technique/page/api-python|api-python]]** |
| - | + | ||
| - | [[https:// | + | |
| - | + | ||
| - | ===== Cas de Mailgun ===== | + | |
| - | + | ||
| - | [[https://documentation.mailgun.com/en/latest/api-events.html# | + | |
| - | + | ||
| - | jsonrpc | + | |
| - | + | ||
| - | 1 endroit, 1 méthode, des paramètres | + | |
| - | < | + | |
| - | + | ||
| - | import json | + | |
| - | + | ||
| - | import requests | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | On créer une sesssion (si plusieurs simultannée) | + | |
| - | + | ||
| - | < | + | |
| - | session= LSession(url, | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | Clef de Session | + | |
| - | + | ||
| - | request.post : pour lancer la requete | + | |
| - | + | ||
| - | < | + | |
| - | request.get(url/ | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | Le endpoint définit ce que l'on veut. | + | |
| - | + | ||
| - | json(string) → renvoie un dictionnaire | + | |
| - | + | ||
| - | request.json() → renvoie un dictionnaire | + | |
| - | + | ||
| - | def get-logs renvoie une reponse de type response | + | |
| - | + | ||
| - | response.json() : est un dictionnaire. | + | |
| - | + | ||
| - | Exemple | + | |
| - | + | ||
| - | <code python> | + | |
| - | """ | + | |
| - | import os | + | |
| - | import sys | + | |
| - | import requests | + | |
| - | if len(sys.argv) != 2: | + | |
| - | print " | + | |
| - | sys.exit(1) | + | |
| - | api_key = YOUR_API_KEY | + | |
| - | # output filename | + | |
| - | filename = " | + | |
| - | # url for retrieval | + | |
| - | domain = " | + | |
| - | key = sys.argv[1] | + | |
| - | url = " | + | |
| - | url = url % (domain, key) | + | |
| - | headers = {" | + | |
| - | # request to API | + | |
| - | r = requests.get(url, | + | |
| - | if r.status_code == 200: | + | |
| - | with open(filename, | + | |
| - | message.write(r.json()[" | + | |
| - | os.system(" | + | |
| - | else: | + | |
| - | print "Oops! Something went wrong: %s" % r.content | + | |
| - | + | ||
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | Pour les bounces | + | |
| - | + | ||
| - | < | + | |
| - | def get_bounces (): | + | |
| - | | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | On peut varier les endpoints (events…) | + | |
| - | + | ||
| - | Et la réponse reçue : | + | |
| - | + | ||
| - | < | + | |
| - | 200 | + | |
| - | { | + | |
| - | " | + | |
| - | [ | + | |
| - | { | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | }, | + | |
| - | ... | + | |
| - | | + | |
| - | " | + | |
| - | { | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | } | + | |
| - | } | + | |
| - | + | ||
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | ===== Tests requêtes / résultats JSON ===== | + | |
| - | + | ||
| - | Des outils pour tester les envois / receptions de requetes : | + | |
| - | + | ||
| - | * [[https:// | + | |
| - | | + | |
| - | | + | |
| - | * [[https:// | + | |
| - | * Avec curl : | + | |
| - | < | + | |
| - | + | ||
| - | curl -v -i -X POST -H " | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | * avec [[https:// | + | |
| - | < | + | |
| - | + | ||
| - | http POST monurl.org/ | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | Voir la doc complète [[https:// | + | |
| - | + | ||
| - | <code bash> | + | |
| - | echo ' | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||