technique:python:api_python

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
technique:python:api_python [2022/11/15 22:25] francoisatechnique: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èteVeuillez accéder au contenu à son nouvel emplacement : [[https://bibliotech.cemea.org/books/outils-technique/page/api-python|api-python]]**
- +
-[[https://deptinfo-ensip.univ-poitiers.fr/ENS/doku/doku.php/stu:python_reseau:webapis|https://deptinfo-ensip.univ-poitiers.fr/ENS/doku/doku.php/stu:python_reseau:webapis]] +
- +
-===== Cas de Mailgun ===== +
- +
-[[https://documentation.mailgun.com/en/latest/api-events.html#events|https://documentation.mailgun.com/en/latest/api-events.html#events]] +
- +
-jsonrpc +
- +
-1 endroit, 1 méthode, des paramètres +
-<code> +
- +
-import json +
- +
-import requests +
- +
-</code> +
- +
-On créer une sesssion (si plusieurs simultannée) +
- +
-<code> +
-session= LSession(url,api,key) +
- +
-</code> +
- +
-Clef de Session +
- +
-request.post : pour lancer la requete +
- +
-<code> +
-request.get(url/endpoint) +
- +
-</code> +
- +
-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 python fourni par mailGun : +
- +
-<code python> +
-"""View a message using its Mailgun storage key.""" +
-import os +
-import sys +
-import requests +
-if len(sys.argv) != 2: +
-  print "Usage: retrieve.py message_key" +
-  sys.exit(1) +
-api_key = YOUR_API_KEY +
-# output filename +
-filename = "message.eml" +
-# url for retrieval +
-domain = "mailgun.com" +
-key = sys.argv[1] +
-url = "https://api.mailgun.net/v3/domains/%s/messages/%s" +
-url = url % (domain, key) +
-headers = {"Accept": "message/rfc2822"+
-# request to API +
-r = requests.get(url, auth=("api", api_key), headers=headers) +
-if r.status_code == 200: +
-  with open(filename, "w") as message: +
-    message.write(r.json()["body-mime"]) +
-  os.system("thunderbird -file %s" % filename) +
-else: +
-  print "Oops! Something went wrong: %s" % r.content +
- +
- +
-</code> +
- +
-Pour les bounces +
- +
-<code> +
-def get_bounces (): +
-     return requests.get("https://api.mailgun.net/v3/YOUR_DOMAIN_NAME/bounces",auth=("api","YOUR_API_KEY")) +
- +
-</code> +
- +
-On peut varier les endpoints (events…) +
- +
-Et la réponse reçue : +
- +
-<code python> +
-200 +
-+
-  "items": +
-    [ +
-      { +
-        "address": "alice@example.com", +
-        "code": "550", +
-        "error": "No such mailbox", +
-        "created_at": "Fri, 21 Oct 2011 11:02:55 GMT" +
-      }, +
-      ... +
-    ], +
-  "paging": +
-    { +
-      "first": <first page URL>, +
-      "next": <next page URL>, +
-      "previous": <previous page URL>, +
-      "last": <last page URL> +
-    } +
-+
- +
- +
-</code> +
-===== Cas de l'API de Garradin ===== +
- +
-Pour utiliser l'[[https://fossil.kd2.org/garradin/wiki?name=API|API de Garradin]], on peut tester avec curl en utilisant l'option "''curl --trace-ascii -''" pour voir le contenu des échanges : +
-<code> +
- +
-=> Send header, 233 bytes (0xe9) +
-0000: POST /api/sql/ HTTP/1.1 +
-0019: Host: assos-zourit-net.garradin.eu +
-003d: Authorization: Basic XXXX +
-007c: User-Agent: curl/7.81.0 +
-0095: Accept: */* +
-00a2: Content-Length: 50 +
-00b6: Content-Type: application/x-www-form-urlencoded +
-00e7: +
-=> Send data, 50 bytes (0x32) +
-0000: SELECT * FROM membres where domaine LIKE "%peak%"; +
- +
-</code> +
- +
-La requête en python doit passer en mode POST (selon la doc) et utiliser l'option "data" pour passer le contenu exact de la requête en mode POST. +
- +
-En mode GET, utiliser l'options "params"+
- +
-<code> +
-import requests +
-from requests.auth import HTTPBasicAuth +
-URL='https://assos-zourit-net.garradin.eu/api/sql/' +
- +
-reponse = requests.post(URL,auth=HTTPBasicAuth('userapi', 'motdepasseAPI'),data='SELECT * FROM membres where domaine LIKE "%truc%";'+
-print(reponse.json()) +
- +
-</code> +
- +
-On peut utiliser la methode ''prepare()'' pour voir le contenu exact des datas envoyés : +
-<code> +
-prepared = requests.Request('POST',URL,auth=HTTPBasicAuth('XX', 'XX'),data={'q': 'SELECT * FROM membres where domaine LIKE "%peak%";'}).prepare() +
-print(prepared.body) +
- +
-</code> +
- +
-===== Tests requêtes / résultats JSON ===== +
- +
-Des outils pour tester les envois / receptions de requetes : +
- +
-  * [[https://webhook.site|https://webhook.site]] : pour tester le résultat reçu puor un webhook en json +
-  [[https://postb.in/|https://postb.in/]] pour voir le résultat des headers et le début du json (mais pas tout) +
-  [[http://requestbin.net/|http://requestbin.net/]] : pour le résultat en ligne (pour curl par exemple) +
-  * [[https://bin.webhookrelay.com|https://bin.webhookrelay.com]] : un autre Json complet +
-  * Avec curl : +
-<code> +
- +
-curl -v -i -X POST -H "Content-Type: application/json" --data '{ "username": "siel", "password": "blarblarf" }' "https://cemea.axelor.com/graf/login.jsp" +
- +
-</code> +
- +
-  * avec [[https://httpie.org|httpie]] (paquet à installer) et un fichier d'une requete json dans un fichier.json : +
-<code> +
- +
-http POST monurl.org/post <fichier.json +
- +
-</code> +
- +
-Voir la doc complète [[https://httpie.org/docs#json|https://httpie.org/docs#json]] par exemple : +
- +
-<code bash> +
-echo '{"hello": "world"}' | http POST monurl.org/post +
- +
- +
-</code> +
- +
  • technique/python/api_python.1668547526.txt.gz
  • Dernière modification : 2022/11/15 22:25
  • de francoisa