Httpie: API Python

Créé le 8 janv. 2017  ·  5Commentaires  ·  Source: httpie/httpie

L'invite HTTP* s'appuie fortement sur la fonction httpie.core.main() pour envoyer des requêtes HTTP réelles. Certaines fonctionnalités de l'invite HTTP, comme la définition des cookies entrants, nous obligent à accéder à l'objet de réponse ( requests.Response , pour être plus précis) en Python, mais httpie.core.main() ne fournit pas une telle API. Ainsi, l'invite HTTP "pirate" HTTPie avec sys.settrace() pour obtenir l'objet de réponse renvoyé par httpie.core.get_response() , comme le montre le code suivant :

https://github.com/eliangcs/http-prompt/blob/cbd092299/http_prompt/execution.py#L430

Je me demande si HTTPie pourrait offrir une API aux développeurs pour accéder plus facilement à l'objet de réponse interne.

* Pour ceux qui ne connaissent pas encore : HTTP Prompt est un wrapper qui fournit une interface interactive de HTTPie.

Commentaire le plus utile

HTTPony touche très peu des API de HTTPie. Il est limité à :

from httpie.cli import parser
from httpie.context import Environment
from httpie.output import streams

Le cœur de ce qui est fait est de passer un requests.models.Request à streams.build_output_stream et d'appeler streams.write_stream . Tout ce qui se passe dans https://github.com/mblayman/httpony/blob/master/httpony/application.py.

Tous les 5 commentaires

Oui, c'est logique, je vais me renseigner. main() peut renvoyer à la fois le code d'état de sortie et la réponse HTTP finale. Et peut-être que les arguments d'analyse seraient également utiles à renvoyer.

@eliangcs Je fais une refactorisation plus importante et je pense qu'il serait bien d'avoir un module api.py stable et documenté à utiliser par des outils tiers, afin qu'ils n'aient pas à toucher aux composants internes qui ont tendance à changer avec le temps.

Pourriez-vous peut-être flasher quelque chose en fonction de ce que http-prompt importe actuellement depuis HTTPie ? Des méthodes vides avec des arguments et quelques brèves docstrings avec des valeurs de retour suffiraient. Un bon point de départ serait simplement de lister toutes les importations dont les http-prompt besoin.

// cc @mblayman

@jkbrzt J'ai fait un grep sur ma base de code. Voilà ce que j'ai trouvé :

# http_prompt/cli.py
from httpie.plugins import FormatterPlugin  # just to avoid cyclic import, not really used
from httpie.output.formatters.colors import Solarized256Style  # to support solarized theme

# http_prompt/execution.py
from httpie.context import Environment  # to construct a custom Environment and pass it to httpie_main
from httpie.core import main as httpie_main  # to generate output and the response object

HTTPony touche très peu des API de HTTPie. Il est limité à :

from httpie.cli import parser
from httpie.context import Environment
from httpie.output import streams

Le cœur de ce qui est fait est de passer un requests.models.Request à streams.build_output_stream et d'appeler streams.write_stream . Tout ce qui se passe dans https://github.com/mblayman/httpony/blob/master/httpony/application.py.

Grand merci. Je vais le parcourir et formaliser ces choses là où cela a du sens. Créez ensuite des wrappers dans httpie.api — ou rendez simplement ces objets importables depuis le module pour commencer.

Cela rendra explicite que les utilisateurs peuvent/pourraient en dépendre et fournira une certaine garantie de stabilité par rapport aux internes. Les modifications apportées à la fonctionnalité httpie.api exportée doivent également être couvertes dans le journal des modifications.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

cunde picture cunde  ·  7Commentaires

Govinda-Fichtner picture Govinda-Fichtner  ·  6Commentaires

rashthedude picture rashthedude  ·  3Commentaires

pyvotal-cguers picture pyvotal-cguers  ·  5Commentaires

rshurts picture rshurts  ·  5Commentaires