Httpie: 蟒蛇API

创建于 2017-01-08  ·  5评论  ·  资料来源: httpie/httpie

HTTP Prompt* 严重依赖于httpie.core.main()函数来发送实际的 HTTP 请求。 一些 HTTP Prompt 的功能,比如设置传入的 cookie,需要我们在 Python 中访问响应对象(更具体的requests.Response ),但是httpie.core.main()不提供这样的 API。 因此,HTTP Prompt 使用sys.settrace()来“破解” HTTPie 以获取httpie.core.get_response()返回的响应对象,如下代码所示:

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

我想知道 HTTPie 是否可以为开发人员提供一个 API 来更轻松地访问内部响应对象。

* 对于那些还不知道的人:HTTP Prompt 是一个提供 HTTPie 交互界面的包装器。

最有用的评论

HTTPony 很少涉及 HTTPie 的 API。 它仅限于:

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

所做工作的核心是将requests.models.Request传递给streams.build_output_stream并调用streams.write_stream 。 所有这些都发生在https://github.com/mblayman/httpony/blob/master/httpony/application.py 中。

所有5条评论

是的,这是有道理的——我会研究这个。 main()可以返回退出状态代码和最终的 HTTP 响应。 也许解析 args 对返回也很有用。

@eliangcs我正在做一个更大的重构,我认为有一个稳定的和记录在案的api.py模块供第三方工具使用会很好,所以他们不必接触内部有随时间变化的趋势。

您能否根据http-prompt当前从 HTTPie 导入的内容闪现一些内容? 带有 args 的空方法和一些带有返回值的简短文档字符串就足够了。 一个好的起点是列出http-prompt需要的所有导入。

//抄送@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.Request传递给streams.build_output_stream并调用streams.write_stream 。 所有这些都发生在https://github.com/mblayman/httpony/blob/master/httpony/application.py 中。

万分感谢。 我将通过它并在有意义的地方将这些事情正式化。 然后在httpie.api创建一些包装器——或者简单地从模块中导入这些对象。

这将使明确的用户可以/可能依赖它并提供与内部结构相比的一些稳定性保证。 对httpie.api导出功能的更改也应包含在更改日志中。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

rashthedude picture rashthedude  ·  3评论

mattotodd picture mattotodd  ·  3评论

tonsV2 picture tonsV2  ·  4评论

hrj picture hrj  ·  5评论

Abdallah-Obaid picture Abdallah-Obaid  ·  4评论