Python - Requêtes HTTP

Le protocole http ou Hyper Text Transfer fonctionne sur le modèle client-serveur. Habituellement, le navigateur Web est le client et l'ordinateur hébergeant le site Web est le serveur. EN python, nous utilisons le module de requêtes pour créer les requêtes http. C'est un module très puissant qui peut gérer de nombreux aspects de la communication http au-delà des simples données de demande et de réponse. Il peut gérer l'authentification, la compression / décompression, les demandes fragmentées, etc.

Un client HTTP envoie une requête HTTP à un serveur sous la forme d'un message de requête qui comprend le format suivant:

  • Une ligne de demande
  • Zéro ou plus de champs d'en-tête (Général | Requête | Entité) suivis de CRLF
  • Une ligne vide (c'est-à-dire une ligne sans rien précédant le CRLF) indiquant la fin des champs d'en-tête
  • Facultativement un corps de message

Les sections suivantes expliquent chacune des entités utilisées dans un message de requête HTTP.

Request-Line

La Request-Line commence par un jeton de méthode, suivi de Request-URI et de la version du protocole, et se termine par CRLF. Les éléments sont séparés par des caractères d'espace SP.

Request-Line = Method SP Request-URI SP HTTP-Version CRLF

Discutons de chacune des parties mentionnées dans la Request-Line.

Méthode de demande

La demande method indique la méthode à exécuter sur la ressource identifiée par le Request-URI. La méthode est sensible à la casse et doit toujours être mentionnée en majuscules. Le tableau suivant répertorie toutes les méthodes prises en charge dans HTTP / 1.1.

SN Méthode et description
1 GET

La méthode GET est utilisée pour récupérer les informations du serveur donné en utilisant un URI donné. Les requêtes utilisant GET ne doivent récupérer que des données et ne doivent avoir aucun autre effet sur les données.

2 HEAD

Identique à GET, mais il ne transfère que la ligne d'état et la section d'en-tête.

3 POST

Une requête POST est utilisée pour envoyer des données au serveur, par exemple des informations client, le téléchargement de fichiers, etc. à l'aide de formulaires HTML.

4 PUT

Remplace toutes les représentations actuelles de la ressource cible par le contenu téléchargé.

5 DELETE

Supprime toutes les représentations actuelles de la ressource cible données par URI.

6 CONNECT

Établit un tunnel vers le serveur identifié par un URI donné.

sept OPTIONS

Décrivez les options de communication pour la ressource cible.

8 TRACE

Effectue un test de boucle de message avec le chemin d'accès à la ressource cible.

Request-URI

Le Request-URI est un identificateur de ressource uniforme et identifie la ressource sur laquelle appliquer la demande. Voici les formulaires les plus couramment utilisés pour spécifier un URI:

Request-URI = "*" | absoluteURI | abs_path | authority
 
SN Méthode et description
1 L'astérisque *est utilisé lorsqu'une requête HTTP ne s'applique pas à une ressource particulière, mais au serveur lui-même, et n'est autorisée que lorsque la méthode utilisée ne s'applique pas nécessairement à une ressource. Par exemple:

OPTIONS * HTTP/1.1

2 le absoluteURIest utilisé lorsqu'une requête HTTP est adressée à un proxy. Le proxy est invité à transférer la demande ou le service à partir d'un cache valide et à renvoyer la réponse. Par exemple:

GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1

3 La forme la plus courante de Request-URI est celle utilisée pour identifier une ressource sur un serveur ou une passerelle d'origine. Par exemple, un client souhaitant récupérer une ressource directement depuis le serveur d'origine créerait une connexion TCP vers le port 80 de l'hôte "www.w3.org" et enverrait les lignes suivantes:

GET /pub/WWW/TheProject.html HTTP/1.1

Host: www.w3.org

Notez que le chemin absolu ne peut pas être vide; si aucun n'est présent dans l'URI d'origine, il DOIT être donné comme "/" (la racine du serveur).

Utiliser les requêtes Python

Nous utiliserons les requêtes de module pour en savoir plus sur la requête http.

pip install requests

Dans l'exemple ci-dessous, nous voyons un cas de requête GET simple et imprimons le résultat de la réponse. Nous choisissons d'imprimer uniquement les 300 premiers caractères.

# How to make http request
import requests as req
r = req.get('http://www.tutorialspoint.com/python/')
print(r.text)[0:300]

Lorsque nous exécutons le programme ci-dessus, nous obtenons la sortie suivante -

<!DOCTYPE html>
<!--[if IE 8]><html class="ie ie8"> <![endif]-->
<!--[if IE 9]><html class="ie ie9"> <![endif]-->
<!--[if gt IE 9]><!-->	<html> <!--<![endif]-->
<head>
<!-- Basic -->
<meta charset="utf-8">
<title>Python Tutorial</title>
<meta name="description" content="Python Tutorial