Estoy armando una aplicación y quiero poder probar los puntos finales de la API. Pensé que Emacs sería una buena manera de hacerlo, especialmente si las respuestas JSON pudieran analizarse y los datos de retorno se usaran en pruebas posteriores.
¿Alguna idea sobre cómo hacer esto, o es una locura?
Respuestas:
restclient es el modo más "interactivo".
Puede consultar un ejemplo de flujo de trabajo en http://jakemccrary.com/blog/2014/07/04/using-emacs-to-explore-an-http-api/ .
request.el : cuchillo suizo HTTP.
emacs-web - "La idea es usar siempre devoluciones de llamada para recopilar la respuesta".
El formulario de devolución de llamada JSON permite que solo se recopilen datos:
fuente
Vieja pregunta, sí ... Pero en caso de que alguien busque en Google esto; otra opción es usar Org Babel y
ob-http
... (se puede instalar desde melpa ).Con
org-babel
, puede crear un.org
archivo que contenga "http
" bloques de código. Cuando se evalúan estos bloques, harán la solicitud HTTP y devolverán la respuesta como resultado.Si estos bloques tienen un
#+NAME:
atributo " ", puede usar sus resultados en cualquier otroorg-babel
bloque. Esto permite una programación alfabetizada bastante ordenada utilizando los resultados de las solicitudes HTTP.Por ejemplo, aquí hay un pequeño documento Org que demuestra que realiza una solicitud HTTP y analiza el JSON devuelto en Ruby:
Así es como se ve en
org-mode
:Al presionar
C-c C-c
el bloque inferior (el Ruby), se evaluará automáticamente el superior para determinar su dependencia (ese es el:var
bit en el encabezado del bloque). Esto significará que lahttp
solicitud se realiza primero y luego los resultados se pasan a Ruby para su posterior procesamiento.Puede hacer esto con tantos bloques como desee y con tantos idiomas.
Si esto se adapta a sus necesidades,
ob-http
requiere un poco de ajustes manuales después de instalarlo para que funcione. (No te preocupes, no es tanto)Después de la instalación
ob-http
, debe personalizar dos variables:org-src-lang-modes
yorg-babel-load-languages
.Entonces, al ejecutar
M-x customize-variable
, puede personalizar cada uno para incluir lo siguiente:org-src-lang-modes
: Querrá personalizar esta variable para incluir una asignación de idioma más, de modo que pueda insertar un valor más al final de la lista:Entonces puedes
C-x C-s
guardar esa personalización.org-babel-load-languages
: Querrá agregar un elemento más a la lista deorg
idiomas habilitados . "http
".Sin embargo, es posible que deba agregarlo a la lista manualmente si la opción no está en las opciones posibles, puede hacerlo haciendo clic en "Estado" y eligiendo "
:
" para mostrar la expresión Lisp ... Luego agregaría lo siguiente solo antes del último paréntesis de cierre:Después de eso, un rápido
C-x C-s
yM-x org-reload
debería ser todo lo que necesitas ...!fuente
Escribí httprepl exactamente para este propósito. Le da una respuesta basada en comint donde puede emitir solicitudes http.
https://github.com/gregsexton/httprepl.el
Puede agregar fácilmente funciones que consuman el resultado de las solicitudes. Por lo general, se usan para una impresión bonita, etc. pero el análisis de una estructura elisp debería ser simple usando la biblioteca integrada json.
fuente
Es perfectamente posible hacerlo porque yo mismo hago casi exactamente lo mismo. Sin embargo, hay un par de advertencias. En primer lugar, tengo una biblioteca localmente parcheada xmlrpc.el . Esto resuelve dos problemas, una incompatibilidad con los emacs modernos y la capacidad de pasar encabezados de autenticación en la solicitud. Los datos que estoy procesando son JSON en XML, pero es posible que pueda omitir el paso XML dependiendo de su configuración.
Todo el levantamiento pesado de RPC se realiza en lava-rpc.el pero no debería ser difícil de seguir. Puede ver la llamada para enviar una pieza de json en cadena aquí .
fuente