Httpie: Python-API

Erstellt am 8. Jan. 2017  ·  5Kommentare  ·  Quelle: httpie/httpie

HTTP Prompt* stützt sich stark auf die Funktion httpie.core.main() , um tatsächliche HTTP-Anfragen zu senden. Einige Funktionen der HTTP-Eingabeaufforderung, wie das Setzen von eingehenden Cookies, erfordern den Zugriff auf das Antwortobjekt ( requests.Response , um genauer zu sein) in Python, aber httpie.core.main() bietet keine solche API. So "hackt" HTTP Prompt HTTPie mit sys.settrace() , um das von httpie.core.get_response() Antwortobjekt zu erhalten, wie der folgende Code zeigt:

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

Ich frage mich, ob HTTPie Entwicklern eine API bieten könnte, um einfacher auf das interne Antwortobjekt zuzugreifen.

* Für diejenigen, die es noch nicht wissen: HTTP Prompt ist ein Wrapper, der eine interaktive Schnittstelle von HTTPie bereitstellt.

Hilfreichster Kommentar

HTTPony berührt sehr wenig von den APIs von HTTPie. Es ist beschränkt auf:

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

Der Kern dessen, was getan wird, besteht darin, ein requests.models.Request an streams.build_output_stream und streams.write_stream aufzurufen. All dies geschieht in https://github.com/mblayman/httpony/blob/master/httpony/application.py.

Alle 5 Kommentare

Ja, es macht Sinn – ich werde das prüfen. main() könnte sowohl den Exit-Statuscode als auch die endgültige HTTP-Antwort zurückgeben. Und vielleicht wäre es auch nützlich, die Parse-Argumente zurückzugeben.

@eliangcs Ich mache ein größeres Refactoring und denke, es wäre gut, ein stabiles und dokumentiertes api.py Modul für die Verwendung durch Tools von Drittanbietern zu haben, damit sie die Interna nicht berühren müssen, die haben die Tendenz, sich im Laufe der Zeit zu verändern.

Könnten Sie vielleicht etwas basierend auf dem, was http-prompt derzeit aus HTTPie importiert, herausflashen? Leere Methoden mit Argumenten und einige kurze Docstrings mit Rückgabewerten würden ausreichen. Ein guter Ausgangspunkt wäre, einfach alle Importe aufzulisten, die http-prompt benötigt.

// cc @mlayman

@jkbrzt Ich habe über meine Codebasis grep gemacht. Das habe ich gefunden:

# 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 berührt sehr wenig von den APIs von HTTPie. Es ist beschränkt auf:

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

Der Kern dessen, was getan wird, besteht darin, ein requests.models.Request an streams.build_output_stream und streams.write_stream aufzurufen. All dies geschieht in https://github.com/mblayman/httpony/blob/master/httpony/application.py.

Vielen Dank. Ich werde es durchgehen und die Dinge formalisieren, wo es Sinn macht. Dann erstellen Sie einige Wrapper in httpie.api – oder machen Sie diese Objekte einfach aus dem Modul importierbar.

Dies macht es explizit, dass Benutzer sich darauf verlassen können/könnten und bietet eine gewisse Stabilitätsgarantie im Vergleich zu den Interna. Änderungen an der httpie.api -exportierten Funktionalität sollten auch im Änderungsprotokoll behandelt werden.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

a-x- picture a-x-  ·  7Kommentare

cunde picture cunde  ·  7Kommentare

hrj picture hrj  ·  5Kommentare

loretoparisi picture loretoparisi  ·  6Kommentare

pyvotal-cguers picture pyvotal-cguers  ·  5Kommentare