Saya sedang menyusun aplikasi, dan ingin dapat menguji titik akhir api. Saya pikir Emacs akan menjadi cara yang keren untuk pergi - terutama jika respons JSON dapat diuraikan dan data pengembalian digunakan dalam tes berikutnya.
Ada ide tentang bagaimana cara melakukannya, atau ini gila?
Jawaban:
restclient adalah mode paling "interaktif".
Anda dapat memeriksa contoh alur kerja di http://jakemccrary.com/blog/2014/07/04/using-emacs-to-explore-an-http-api/ .
request.el - HTTP swiss knife.
emacs-web - "Idenya adalah untuk selalu menggunakan panggilan balik untuk mengumpulkan respons."
Formulir panggilan balik JSON memungkinkan data yang dikumpulkan:
sumber
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 diorg-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:
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 bahwahttp
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
danorg-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:Maka Anda dapat
C-x C-s
menyimpan penyesuaian itu.org-babel-load-languages
: Anda akan ingin menambahkan satu item lagi ke daftarorg
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:Setelah itu, cepat
C-x C-s
danM-x org-reload
harus semua yang Anda butuhkan ..!sumber
Saya menulis httprepl untuk tujuan ini. Ini memberi Anda pengganti berbasis comint di mana Anda dapat mengeluarkan permintaan http.
https://github.com/gregsexton/httprepl.el
Anda dapat dengan mudah menambahkan fungsi yang mengonsumsi hasil permintaan. Ini biasanya digunakan untuk mencetak cantik dll tetapi parsing ke struktur elisp harus sederhana menggunakan builtin json library.
sumber
Sangat mungkin untuk dilakukan karena saya melakukan hampir hal yang sama sendiri. Ada beberapa peringatan. Pertama-tama saya memiliki pustaka xmlrpc.el patch lokal . Ini memecahkan dua masalah, ketidakcocokan dengan emacs modern dan kemampuan untuk meneruskan header otentikasi dalam permintaan. Data yang saya proses adalah JSON dalam XML tetapi Anda mungkin dapat melewati langkah XML tergantung pada pengaturan Anda.
Semua pengangkatan RPC berat dilakukan di lava-rpc.el tetapi seharusnya tidak sulit untuk diikuti. Anda dapat melihat panggilan untuk mengirimkan sepotong json yang diikat di sini .
sumber