Httpie: Python API

作成日 2017年01月08日  ·  5コメント  ·  ソース: httpie/httpie

HTTPプロンプト*は、実際のHTTPリクエストを送信するためにhttpie.core.main()関数に大きく依存しています。 受信Cookieの設定など、一部のHTTPプロンプトの機能では、Pythonで応答オブジェクト(より具体的にはrequests.Response )にアクセスする必要がありますが、 httpie.core.main()はそのようなAPIを提供しません。 したがって、次のコードが示すように、HTTPプロンプトはsys.settrace() HTTPieを「ハッキング」して、 httpie.core.get_response()によって返される応答オブジェクトを取得します。

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

HTTPieは、開発者が内部応答オブジェクトに簡単にアクセスするためのAPIを提供できるのではないかと思います。

*まだ知らない人のために:HTTPプロンプトはHTTPieのインタラクティブなインターフェースを提供するラッパーです。

最も参考になるコメント

HTTPonyはHTTPieのAPIにほとんど触れません。 これは以下に限定されます:

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

行われているもののコアが通過しているrequests.models.Requeststreams.build_output_streamして呼び出すstreams.write_stream 。 それはすべてhttps://github.com/mblayman/httpony/blob/master/httpony/application.pyで発生し

全てのコメント5件

はい、それは理にかなっています—これを調べます。 main()は、終了ステータスコードと最終的なHTTP応答の両方を返す可能性があります。 また、解析引数も返すのに役立つかもしれません。

@eliangcs私はより大きなリファクタリングを行っており、サードパーティのツールで使用するための安定した文書化されたapi.pyモジュールがあるとよいと思います。そのため、内部に触れる必要はありません。時間の経過とともに変化する傾向があります。

http-prompt現在HTTPieからインポートしているものに基づいて、何かをフラッシュすることができますか? argsを含む空のメソッドと、戻り値を含むいくつかの簡単なdocstringで十分です。 良い出発点は、 http-promptが必要とするすべてのインポートをリストすることです。

// cc @mblayman

@jkbrztコードベースでgrepを実行しました。 これらは私が見つけたものです:

# 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はHTTPieのAPIにほとんど触れません。 これは以下に限定されます:

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

行われているもののコアが通過しているrequests.models.Requeststreams.build_output_streamして呼び出すstreams.write_stream 。 それはすべてhttps://github.com/mblayman/httpony/blob/master/httpony/application.pyで発生し

まことにありがとうございます。 私はそれを通過し、それが理にかなっているところでそれらのことを形式化するつもりです。 次に、 httpie.apiいくつかのラッパーを作成します。または、最初にそれらのオブジェクトをモジュールからインポート可能にします。

これにより、明示的なユーザーがそれに依存できる/依存する可能性があり、内部と比較して安定性がある程度保証されます。 httpie.apiエクスポートされた機能への変更も、変更ログでカバーする必要があります。

このページは役に立ちましたか?
0 / 5 - 0 評価