logo

Requêtes GET et POST utilisant Python

Cet article traite de deux méthodes de requête HTTP (Hypertext Transfer Protocol) : requêtes GET et POST en Python et de leur implémentation en Python. 

Qu’est-ce que HTTP ?  

HTTP est un ensemble de protocoles conçus pour permettre la communication entre clients et serveurs. Il fonctionne comme un protocole requête-réponse entre un client et un serveur. Un navigateur Web peut être le client et une application sur un ordinateur qui héberge un site Web peut être le serveur. Ainsi pour demander une réponse au serveur il existe principalement deux méthodes :

  1. OBTENIR : Pour demander des données au serveur.
  2. POSTE : Pour soumettre les données à traiter au serveur.

Voici un diagramme simple qui explique le concept de base des méthodes GET et POST.



Requêtes GET et POST utilisant Python' src='//techcodeview.com/img/python/28/get-and-post-requests-using-python.webp' title= 

 Maintenant, pour faire des requêtes HTTP dans Python nous pouvons utiliser plusieurs bibliothèques HTTP comme :

La plus élégante et la plus simple des bibliothèques répertoriées ci-dessus est Requests. Nous utiliserons la bibliothèque de requêtes dans cet article. Pour télécharger et installer la bibliothèque Requests, utilisez la commande suivante :

pip install requests

Faire une demande Get

L'exemple ci-dessus recherche la latitude, la longitude et l'adresse formatée d'un emplacement donné en envoyant une requête GET à l'API Google Maps. Un API (Application Programming Interface) vous permet d'accéder aux fonctionnalités internes d'un programme de manière limitée. Et dans la plupart des cas, les données fournies sont en JSON (notation d'objet JavaScript) format (qui est implémenté en tant qu'objets de dictionnaire en Python !).

Python
# importing the requests library import requests # api-endpoint URL = 'http://maps.googleapis.com/maps/api/geocode/json' # location given here location = 'delhi technological university' # defining a params dict for the parameters to be sent to the API PARAMS = {'address':location} # sending get request and saving the response as response object r = requests.get(url = URL params = PARAMS) # extracting data in json format data = r.json() # extracting latitude longitude and formatted address # of the first matching location latitude = data['results'][0]['geometry']['location']['lat'] longitude = data['results'][0]['geometry']['location']['lng'] formatted_address = data['results'][0]['formatted_address'] # printing the output print('Latitude:%snLongitude:%snFormatted Address:%s' %(latitude longitudeformatted_address)) 

Sortir:

Requêtes GET et POST utilisant Python

Points importants à déduire :

PARAMS = {'address':location}

L’URL d’une requête GET contient généralement certains paramètres. Pour les requêtes, les paramètres de la bibliothèque peuvent être définis sous forme de dictionnaire. Ces paramètres sont ensuite analysés et ajoutés à l'URL de base ou au point de terminaison de l'API. Pour comprendre le rôle du paramètre, essayez d'imprimer r.url après la création de l'objet de réponse. Vous verrez quelque chose comme ceci :

http://maps.googleapis.com/maps/api/geocode/json?address=delhi+technological+university

Il s'agit de l'URL réelle sur laquelle la requête GET est effectuée

r = requests.get(url = URL params = PARAMS)

Ici, nous créons un objet de réponse 'r' qui stockera la requête-réponse. Nous utilisons la méthode request.get() puisque nous envoyons une requête GET. Les deux arguments que nous transmettons sont l'URL et le dictionnaire de paramètres.

data = r.json()

Désormais, afin de récupérer les données de l'objet de réponse, nous devons convertir le contenu brut de la réponse en une structure de données de type JSON. Ceci est réalisé en utilisant la méthode json(). Enfin, nous extrayons les informations requises en analysant l'objet de type JSON.

Faire une requête POST

Cet exemple explique comment coller votre code_source à pastabin.com en envoyant une requête POST à ​​l'API PASTEBIN. Tout d'abord, vous devrez générer une clé API en inscrivez-vous ici puis accéder à votre Clé API ici.  

Python
# importing the requests library import requests # defining the api-endpoint API_ENDPOINT = 'https://pastebin.com/api/api_post.php' # your API key here API_KEY = 'XXXXXXXXXXXXXXXXX' # your source code here source_code = ''' print('Hello world!') a = 1 b = 2 print(a + b) ''' # data to be sent to api data = {'api_dev_key': API_KEY 'api_option': 'paste' 'api_paste_code': source_code 'api_paste_format': 'python'} # sending post request and saving response as response object r = requests.post(url=API_ENDPOINT data=data) # extracting response text pastebin_url = r.text print('The pastebin URL is:%s' % pastebin_url) 

Caractéristiques importantes de ce code :

data = {'api_dev_key':API_KEY  
'api_option':'paste'
'api_paste_code':source_code
'api_paste_format':'python'}

Là encore, nous devrons transmettre certaines données au serveur API. Nous stockons ces données sous forme de dictionnaire.

r = requests.post(url = API_ENDPOINT data = data)

Ici, nous créons un objet de réponse 'r' qui stockera la requête-réponse. Nous utilisons la méthode request.post() puisque nous envoyons une requête POST. Les deux arguments que nous transmettons sont l'URL et le dictionnaire de données.

pastebin_url = r.text

En réponse, le serveur traite les données qui lui sont envoyées et envoie l'URL pastebin_URL de votre code_source auquel on peut accéder simplement par r.texte.

demandes.post La méthode pourrait être utilisée pour de nombreuses autres tâches, comme remplir et soumettre les formulaires Web publiés sur votre chronologie FB à l'aide de l'API Facebook Graph, etc. 

  • Lorsque la méthode est GET, toutes les données du formulaire sont codées dans l'URL et ajoutées au action URL en tant que paramètres de chaîne de requête. Avec le formulaire POST, les données apparaissent dans le corps du message de la requête HTTP.
  • Dans la méthode GET, les données des paramètres sont limitées à ce que nous pouvons insérer dans la ligne de requête (URL). Il est plus sûr d'utiliser moins de 2 Ko de paramètres, certains serveurs gèrent jusqu'à 64 Ko. Aucun problème de ce type dans la méthode POST puisque nous envoyons des données dans le corps du message de la requête HTTP et non de l'URL.
  • Seuls les caractères ASCII sont autorisés pour les données à envoyer dans la méthode GET. Il n’existe aucune restriction de ce type dans la méthode POST.
  • GET est moins sécurisé que POST car les données envoyées font partie de l'URL. La méthode GET ne doit donc pas être utilisée lors de l’envoi de mots de passe ou d’autres informations sensibles.
Créer un quiz