Httpie: API de Python

Creado en 8 ene. 2017  ·  5Comentarios  ·  Fuente: httpie/httpie

HTTP Prompt * depende en gran medida de la función httpie.core.main() para enviar solicitudes HTTP reales. Algunas características de HTTP Prompt, como la configuración de cookies entrantes, requieren que accedamos al objeto de respuesta ( requests.Response , para ser más específicos) en Python, pero httpie.core.main() no proporciona dicha API. Entonces HTTP Prompt "piratea" HTTPie con sys.settrace() para obtener el objeto de respuesta devuelto por httpie.core.get_response() , como muestra el siguiente código:

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

Me pregunto si HTTPie podría ofrecer una API para que los desarrolladores accedan más fácilmente al objeto de respuesta interno.

* Para aquellos que aún no lo han sabido: HTTP Prompt es un contenedor que proporciona una interfaz interactiva de HTTPie.

Comentario más útil

HTTPony toca muy poco de las API de HTTPie. Está limitado a:

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

El núcleo de lo que se hace es pasar un requests.models.Request a streams.build_output_stream y llamar a streams.write_stream . Todo eso sucede en https://github.com/mblayman/httpony/blob/master/httpony/application.py.

Todos 5 comentarios

Sí, tiene sentido, investigaré esto. main() podría devolver tanto el código de estado de salida como la respuesta HTTP final. Y tal vez los argumentos de análisis también serían útiles para regresar también.

@eliangcs Estoy haciendo una refactorización más grande y creo que sería bueno tener un módulo api.py estable y documentado para que lo utilicen herramientas de terceros, para que no tengan que tocar las partes internas que tienen la tendencia a cambiar con el tiempo.

¿Podría mostrar algo basado en lo que http-prompt importa actualmente de HTTPie? Los métodos vacíos con argumentos y algunas cadenas de documentación breves con valores de retorno serían suficientes. Un buen punto de partida sería simplemente enumerar todas las importaciones que http-prompt necesita.

// cc @mblayman

@jkbrzt Hice un grep sobre mi base de código. Estos son los que encontré:

# 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 muy poco de las API de HTTPie. Está limitado a:

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

El núcleo de lo que se hace es pasar un requests.models.Request a streams.build_output_stream y llamar a streams.write_stream . Todo eso sucede en https://github.com/mblayman/httpony/blob/master/httpony/application.py.

Muchas gracias. Lo revisaré y formalizaré aquellas cosas donde tenga sentido. Luego, cree algunos envoltorios en httpie.api , o simplemente haga que esos objetos se puedan importar desde el módulo para empezar.

Esto lo hará explícito, los usuarios pueden / podrían depender de él y proporcionará alguna garantía de estabilidad en comparación con los componentes internos. Los cambios en la funcionalidad exportada httpie.api también deben incluirse en el registro de cambios.

¿Fue útil esta página
0 / 5 - 0 calificaciones