Stare pytanie, tak ... Ale na wypadek, gdyby ktokolwiek googlował; inną opcją jest użycie Org Babel i ob-http
... (Można zainstalować z Melpy .)
Za pomocą org-babel
możesz utworzyć .org
plik zawierający http
bloki kodu. Gdy te bloki są oceniane, wysyłają żądanie HTTP i zwracają odpowiedź jako wynik.
Jeśli te bloki mają #+NAME:
atrybut „ ”, możesz użyć ich wyników w dowolnym innym org-babel
bloku. Pozwala to na pewne porządne programowanie z wykorzystaniem wyników żądań HTTP.
Na przykład, oto mały dokument organizacji przedstawiający wysyłanie żądania HTTP i analizowanie zwróconego JSON w 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.
Tak to wygląda w org-mode
:
Trafienie C-c C-c
w dolny blok (Rubinowy) automatycznie oceni górny :var
blok pod kątem jego zależności (to jest bit w nagłówku bloku). Oznacza to, że http
żądanie jest najpierw tworzone, a następnie wyniki są przekazywane do Ruby w celu dalszego przetwarzania.
Możesz to zrobić z dowolną liczbą bloków i dowolną liczbą języków.
Jeśli to odpowiada Twoim potrzebom, ob-http
wymaga trochę ręcznego dostosowania po zainstalowaniu, aby działało. (Nie martw się, to nie tak dużo)
Po instalacji ob-http
musisz dostosować dwie zmienne: org-src-lang-modes
i org-babel-load-languages
.
Tak więc, uruchamiając M-x customize-variable
, możesz dostosować każdy z nich, aby zawierał następujące elementy:
org-src-lang-modes
: Będziesz chciał dostosować tę zmienną, aby zawierała jeszcze jedno mapowanie języka, dzięki czemu możesz wstawić jeszcze jedną wartość na końcu listy:
String: http
Symbol: ob-http
Następnie możesz C-x C-s
zapisać to dostosowanie.
org-babel-load-languages
: Będziesz chciał dodać jeszcze jeden element do listy włączonych org
języków. „ http
”.
Chociaż może być konieczne ręczne dodanie go do listy, jeśli opcja nie jest dostępna w możliwych opcjach, możesz to zrobić, klikając „Stan” i wybierając „ :
”, aby wyświetlić wyrażenie Lisp ... przed ostatnim nawiasem zamykającym:
(http . t)
Po tym szybko C-x C-s
i M-x org-reload
powinno być wszystkim, czego potrzebujesz ..!