Httpie: API Python

Criado em 8 jan. 2017  ·  5Comentários  ·  Fonte: httpie/httpie

O prompt HTTP * depende fortemente da função httpie.core.main() para enviar solicitações HTTP reais. Alguns recursos do prompt HTTP, como a configuração de cookies de entrada, exigem que acessemos o objeto de resposta ( requests.Response , para ser mais específico) em Python, mas httpie.core.main() não fornece tal API. Portanto, o prompt HTTP "hacks" HTTPie com sys.settrace() para obter o objeto de resposta retornado por httpie.core.get_response() , como mostra o código a seguir:

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

Gostaria de saber se o HTTPie poderia oferecer uma API para que os desenvolvedores acessem o objeto de resposta interna mais facilmente.

* Para quem ainda não sabe: HTTP Prompt é um wrapper que fornece uma interface interativa de HTTPie.

Comentários muito úteis

HTTPony toca muito pouco nas APIs de HTTPie. É limitado a:

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

A essência do que é feito é passar requests.models.Request para streams.build_output_stream e chamar streams.write_stream . Tudo isso acontece em https://github.com/mblayman/httpony/blob/master/httpony/application.py.

Todos 5 comentários

Sim, faz sentido - vou analisar isso. main() poderia retornar o código de status de saída e a resposta HTTP final. E talvez os args de análise também sejam úteis para retornar também.

@eliangcs Estou fazendo uma refatoração maior e acho que seria bom ter um módulo api.py estável e documentado para uso por ferramentas de terceiros, para que eles não precisem mexer nos componentes internos que têm a tendência de mudar com o tempo.

Você poderia piscar algo com base no que http-prompt importa atualmente do HTTPie? Métodos vazios com args e algumas docstrings breves com valores de retorno seriam suficientes. Um bom ponto de partida seria apenas listar todas as necessidades de importação http-prompt .

// cc @mblayman

@jkbrzt Fiz um grep sobre minha base de código. Estes são o que eu encontrei:

# 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 toca muito pouco nas APIs de HTTPie. É limitado a:

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

A essência do que é feito é passar requests.models.Request para streams.build_output_stream e chamar streams.write_stream . Tudo isso acontece em https://github.com/mblayman/httpony/blob/master/httpony/application.py.

Ótimo, obrigado. Vou passar por isso e formalizar as coisas onde fizer sentido. Em seguida, faça alguns wrappers em httpie.api - ou simplesmente torne esses objetos importáveis ​​do módulo para começar.

Isso tornará explícito os usuários podem / podem depender dele e fornecer alguma garantia de estabilidade em comparação com os internos. As alterações na funcionalidade exportada de httpie.api também devem ser abordadas no log de alterações.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

poskadesign picture poskadesign  ·  7Comentários

loretoparisi picture loretoparisi  ·  6Comentários

hrj picture hrj  ·  5Comentários

Abdallah-Obaid picture Abdallah-Obaid  ·  4Comentários

a-x- picture a-x-  ·  7Comentários