Vecchia domanda, sì ... Ma nel caso in cui qualcuno lo cerchi su Google; un'altra opzione sta usando Org Babel e ob-http
... (Può essere installato da melpa .)
Con org-babel
, è possibile creare un .org
file contenente " http
" blocchi di codice. Quando questi blocchi vengono valutati, faranno la richiesta HTTP e restituiranno la risposta come risultato.
Se questi blocchi hanno un " #+NAME:
" attributo, puoi usare i loro risultati in qualsiasi altro org-babel
blocco. Ciò consente una programmazione piuttosto accurata utilizzando i risultati delle richieste HTTP.
Ad esempio, ecco un piccolo documento dell'organizzazione che dimostra come effettuare una richiesta HTTP e analizzare il JSON restituito in 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.
Ecco come appare org-mode
:
Colpire C-c C-c
sul blocco inferiore (quello di Ruby) valuterà automagicamente quello superiore per la sua dipendenza (Questo è il :var
bit nell'intestazione del blocco.). Ciò significa che la http
richiesta viene prima fatta, quindi i risultati vengono passati a Ruby per ulteriori elaborazioni.
Puoi farlo con tutti i blocchi che vuoi e con quante più lingue.
Se questo soddisfa le tue esigenze, ob-http
richiede un po 'di modifica manuale dopo averlo installato per farlo funzionare. (Non preoccuparti, non è molto)
Dopo l'installazione ob-http
, è necessario personalizzare due variabili: org-src-lang-modes
e org-babel-load-languages
.
Quindi, eseguendo M-x customize-variable
, è possibile personalizzare ciascuno per includere quanto segue:
org-src-lang-modes
: Vorrai personalizzare questa variabile per includere un'altra mappatura della lingua, in modo da poter inserire un altro valore alla fine dell'elenco:
String: http
Symbol: ob-http
Quindi è possibile C-x C-s
salvare quella personalizzazione.
org-babel-load-languages
: Vorrai aggiungere un altro elemento all'elenco delle org
lingue abilitate . " http
".
Tuttavia, potrebbe essere necessario aggiungerlo manualmente all'elenco se l'opzione non è tra le possibili opzioni, puoi farlo facendo clic su "Stato" e scegliendo " :
" per mostrare l'espressione Lisp ... Quindi aggiungere quanto segue prima dell'ultima parentesi di chiusura:
(http . t)
Dopodiché, un veloce C-x C-s
e M-x org-reload
dovrebbe essere tutto ciò che serve ..!