Старый вопрос, да ... Но в том случае, если кто-нибудь гуглит это; другой вариант использует Org Babel и ob-http
... (может быть установлен из melpa .)
С помощью org-babel
вы можете создать .org
файл, содержащий " http
" блоки кода. Когда эти блоки оценены, они сделают HTTP-запрос и вернут ответ как результат.
Если эти блоки имеют #+NAME:
атрибут " ", вы можете использовать их результаты в любом другом org-babel
блоке. Это позволяет довольно аккуратно и грамотно программировать, используя результаты HTTP-запросов.
Например, вот небольшой документ Org, демонстрирующий выполнение HTTP-запроса и анализ возвращаемого JSON в 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.
Вот как это выглядит в org-mode
:
Нажатие C-c C-c
на нижний блок (Ruby) автоматически оценивает верхний :var
блок на предмет его зависимости (это бит в заголовке блока). Это будет означать, что http
сначала выполняется запрос, а затем результаты передаются в Ruby для дальнейшей обработки.
Вы можете сделать это с таким количеством блоков, сколько хотите, и с таким количеством языков.
Если это соответствует вашим потребностям, для его работы ob-http
требуется небольшая ручная настройка после установки. (Не волнуйтесь, это не так уж много)
После установки ob-http
вам нужно настроить две переменные:, org-src-lang-modes
и org-babel-load-languages
.
Таким образом, запустив M-x customize-variable
, вы можете настроить каждый, чтобы включить следующее:
org-src-lang-modes
: Вы захотите настроить эту переменную так, чтобы она включала еще одно сопоставление языков, поэтому вы можете вставить еще одно значение в конец списка:
String: http
Symbol: ob-http
Затем вы можете C-x C-s
сохранить эту настройку.
org-babel-load-languages
: Вы хотите добавить еще один элемент в список включенных org
языков. " http
"
Хотя вам может понадобиться добавить его в список вручную, если этот параметр отсутствует в возможных параметрах, вы можете сделать это, нажав «Состояние» и выбрав « :
», чтобы отобразить выражение Lisp ... Затем вы добавите следующее перед последней закрывающей скобкой:
(http . t)
После этого по быстрому C-x C-s
и M-x org-reload
должно быть все что нужно ..!