Pertanyaan lama, ya ... Tetapi jika ada orang Google ini; opsi lain menggunakan Org Babel dan ob-http
... (Dapat diinstal dari melpa .)
Dengan org-babel
, Anda dapat membuat .org
file yang berisi " http
" blok kode. Ketika blok ini dievaluasi, mereka akan membuat permintaan HTTP dan mengembalikan respons sebagai hasilnya.
Jika blok ini memiliki #+NAME:
atribut " ", Anda dapat menggunakan hasilnya di org-babel
blok lain . Hal ini memungkinkan untuk beberapa pemrograman melek yang cukup rapi menggunakan hasil permintaan HTTP.
Misalnya, berikut ini adalah dokumen Org kecil yang menunjukkan pembuatan permintaan HTTP dan menguraikan JSON yang dikembalikan di 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.
Ini adalah seperti apa ini org-mode
:
Memukul C-c C-c
di blok bawah (Yang Ruby) akan secara otomatis mengevaluasi yang teratas untuk ketergantungannya (Itulah :var
bit di header blok.). Ini berarti bahwa http
permintaan dibuat terlebih dahulu, dan kemudian hasilnya diteruskan ke Ruby untuk diproses lebih lanjut.
Anda dapat melakukan ini dengan blok sebanyak yang Anda suka dan dengan banyak bahasa.
Jika ini sesuai dengan kebutuhan Anda, ob-http
perlu sedikit penyesuaian manual setelah Anda menginstalnya agar berfungsi. (Jangan khawatir, itu tidak banyak)
Setelah menginstal ob-http
, Anda perlu menyesuaikan dua variabel:, org-src-lang-modes
dan org-babel-load-languages
.
Jadi, dengan menjalankan M-x customize-variable
, Anda dapat menyesuaikan masing-masing untuk menyertakan yang berikut:
org-src-lang-modes
: Anda ingin menyesuaikan variabel ini untuk memasukkan satu lagi pemetaan bahasa, sehingga Anda bisa memasukkan satu nilai lagi ke akhir daftar:
String: http
Symbol: ob-http
Maka Anda dapat C-x C-s
menyimpan penyesuaian itu.
org-babel-load-languages
: Anda akan ingin menambahkan satu item lagi ke daftar org
bahasa yang diaktifkan . " http
".
Meskipun, Anda mungkin perlu menambahkannya ke daftar secara manual jika opsi tersebut tidak ada dalam opsi yang memungkinkan, Anda dapat melakukannya dengan mengklik "Status" dan memilih " :
" untuk menampilkan ekspresi Lisp ... Kemudian Anda akan menambahkan yang berikut hanya sebelum tanda kurung penutupan terakhir:
(http . t)
Setelah itu, cepat C-x C-s
dan M-x org-reload
harus semua yang Anda butuhkan ..!