Maison  >  Article  >  développement back-end  >  Comment prévisualiser les requêtes HTTP brutes en Python à l'aide de Requests\' PreparedRequest ?

Comment prévisualiser les requêtes HTTP brutes en Python à l'aide de Requests\' PreparedRequest ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-23 15:46:02814parcourir

How to Preview Raw HTTP Requests in Python Using Requests' PreparedRequest?

Impression de requêtes HTTP brutes en Python avec des requêtes

Lorsque vous travaillez avec le module Requêtes, vous pouvez rencontrer des situations dans lesquelles il est avantageux d'inspecter le brut Requête HTTP en cours d'envoi au serveur. Cela inclut non seulement les en-têtes mais également la ligne et le contenu de la requête.

Solution utilisant PreparedRequest :

À partir de la version 1.2.3, Requests a introduit l'objet PreparedRequest. Cet objet représente les « octets exacts qui seront envoyés au serveur », comme documenté ici : https://requests.readthedocs.io/en/latest/advanced/prepared-requests-and-api/

Pour imprimer la requête HTTP brute dans un joli format, vous pouvez exploiter l'objet PreparedRequest comme suit :

<code class="python">import requests

req = requests.Request('POST', 'http://stackoverflow.com', headers={'X-Custom': 'Test'}, data='a=1&b=2')
prepared = req.prepare()

def pretty_print_POST(req):
    """
    Formats and prints the prepared request in a readable manner.
    """
    print('{}\n{}\r\n{}\r\n\r\n{}'.format(
        '-----------START-----------',
        req.method + ' ' + req.url,
        '\r\n'.join('{}: {}'.format(k, v) for k, v in req.headers.items()),
        req.body,
    ))

pretty_print_POST(prepared)

# Output:
-----------START-----------
POST http://stackoverflow.com/
Content-Length: 7
X-Custom: Test

a=1&b=2</code>

Cela affichera la ligne de requête, les en-têtes et le corps de la requête dans un format visuellement agréable.

Remarque :Le formatage utilisé dans la fonction Pretty_print_POST est conçu pour des raisons de lisibilité et peut différer légèrement de la demande réelle envoyée.

Une fois que vous avez inspecté la demande préparée, vous pouvez procéder à envoyez la demande réelle à l'aide de la session de demandes comme suit :

<code class="python">s = requests.Session()
s.send(prepared)</code>

Pour des informations plus détaillées sur les fonctionnalités avancées telles que les demandes préparées et l'API, reportez-vous à la documentation des demandes : https://requests.readthedocs.io/ fr/dernier/avancé/requêtes-préparées-et-api/

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn