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 otro org-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:
* The request
The following is the example request shown on [[https://github.com/zweifisch/ob-http][ob-http's Github page]]...
It isn't anything fancy, but it is a REST API request, and returns
JSON, so it works for the sake of this demonstration:
#+NAME:ob-languages
#+BEGIN_SRC http :pretty
GET https://api.github.com/repos/zweifisch/ob-http/languages
#+END_SRC
#+RESULTS:
: {
: "Emacs Lisp": 7034
: }
Notice how this has a "=#+NAME:=" attribute? This is a name we can use
in other =org-babel= blocks. (As you will see below)
* Using the request
Now that I have an =http= request in an org block with a name... Lets
write something in a completely different language and use our HTTP
request's response:
#+BEGIN_SRC ruby :var langs=ob-languages
require 'json'
JSON.parse(langs)['Emacs Lisp']
#+END_SRC
#+RESULTS:
: 7034
The =:var= keyword allowed me to assign the "=langs=" variable in the
Ruby block to the result of the =ob-languages= block [[The request][above]].
This didn't have to be in Ruby, this could have been any language,
including another =http= block.
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 la http
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
y org-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:
String: http
Symbol: ob-http
Entonces puedes C-x C-s
guardar esa personalización.
org-babel-load-languages
: Querrá agregar un elemento más a la lista de org
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:
(http . t)
Después de eso, un rápido C-x C-s
y M-x org-reload
debería ser todo lo que necesitas ...!