Httpie: Python API

Созданный на 8 янв. 2017  ·  5Комментарии  ·  Источник: httpie/httpie

HTTP Prompt * в значительной степени полагается на функцию httpie.core.main() для отправки фактических HTTP-запросов. Некоторые функции HTTP Prompt, такие как установка входящих файлов cookie, требуют от нас доступа к объекту ответа (точнее, requests.Response ) в Python, но httpie.core.main() не предоставляет такого API. Таким образом, HTTP Prompt "взламывает" HTTPie с помощью sys.settrace() чтобы получить объект ответа, возвращенный httpie.core.get_response() , как показано в следующем коде:

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

Интересно, может ли HTTPie предложить разработчикам API для более простого доступа к внутреннему объекту ответа.

* Для тех, кто еще не знал: HTTP Prompt - это оболочка, которая предоставляет интерактивный интерфейс HTTPie.

Самый полезный комментарий

HTTPony очень мало затрагивает API HTTPie. Это ограничено:

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-ответ. И, возможно, также будет полезно вернуть аргументы синтаксического анализа.

@eliangcs Я занимаюсь большим рефакторингом и думаю, было бы хорошо иметь стабильный и документированный модуль api.py для использования сторонними инструментами, чтобы им не приходилось трогать внутренние компоненты, которые имеют тенденцию меняться со временем.

Не могли бы вы высветить что-нибудь на основе того, что http-prompt настоящее время импортирует из HTTPie? Достаточно пустых методов с аргументами и коротких строк документации с возвращаемыми значениями. Хорошей отправной точкой было бы просто перечисление всего импорта, необходимого для 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 очень мало затрагивает API HTTPie. Это ограничено:

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 рейтинги