Requêtes GET et POST utilisant Python

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 

 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:  %s  n  Longitude:  %s  n  Formatted Address:  %s  '   %  (  latitude     longitude    formatted_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