Я собираю приложение, и хочу иметь возможность проверить конечные точки API. Я подумал, что Emacs был бы отличным способом - особенно если бы можно было проанализировать ответы JSON и данные возврата, использованные в последующих тестах.
Есть идеи, как это сделать, или это просто безумие?
Ответы:
restclient - самый «интерактивный» режим.
Вы можете проверить пример рабочего процесса на http://jakemccrary.com/blog/2014/07/04/using-emacs-to-explore-an-http-api/ .
request.el - HTTP швейцарский нож.
emacs-web - «Идея в том, чтобы всегда использовать обратные вызовы для сбора ответа».
Форма обратного вызова JSON позволяет собирать только данные:
источник
Старый вопрос, да ... Но в том случае, если кто-нибудь гуглит это; другой вариант использует Org Babel и
ob-http
... (может быть установлен из melpa .)С помощью
org-babel
вы можете создать.org
файл, содержащий "http
" блоки кода. Когда эти блоки оценены, они сделают HTTP-запрос и вернут ответ как результат.Если эти блоки имеют
#+NAME:
атрибут " ", вы можете использовать их результаты в любом другомorg-babel
блоке. Это позволяет довольно аккуратно и грамотно программировать, используя результаты HTTP-запросов.Например, вот небольшой документ Org, демонстрирующий выполнение HTTP-запроса и анализ возвращаемого JSON в Ruby:
Вот как это выглядит в
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
: Вы захотите настроить эту переменную так, чтобы она включала еще одно сопоставление языков, поэтому вы можете вставить еще одно значение в конец списка:Затем вы можете
C-x C-s
сохранить эту настройку.org-babel-load-languages
: Вы хотите добавить еще один элемент в список включенныхorg
языков. "http
"Хотя вам может понадобиться добавить его в список вручную, если этот параметр отсутствует в возможных параметрах, вы можете сделать это, нажав «Состояние» и выбрав «
:
», чтобы отобразить выражение Lisp ... Затем вы добавите следующее перед последней закрывающей скобкой:После этого по быстрому
C-x C-s
иM-x org-reload
должно быть все что нужно ..!источник
Я написал httprepl именно для этой цели. Он предоставляет вам репл на основе коминт, где вы можете отправлять http запросы.
https://github.com/gregsexton/httprepl.el
Вы можете легко добавлять функции, которые потребляют результат запросов. Они обычно используются для красивой печати и т. Д., Но синтаксический анализ структуры elisp должен быть простым с использованием встроенной библиотеки json.
источник
Это вполне возможно, потому что я сам делаю почти то же самое. Есть несколько предостережений, хотя. Прежде всего, у меня есть локально исправленная библиотека xmlrpc.el . Это решает две проблемы: несовместимость с современными emacs и возможность передавать заголовки аутентификации в запросе. Данные, которые я обрабатываю, - это JSON в XML, но вы можете пропустить шаг XML в зависимости от ваших настроек.
Весь тяжелый RPC-лифтинг выполняется в lava-rpc.el, но за ним не должно быть никаких трудностей. Вы можете увидеть призыв отправить строковый фрагмент json здесь .
источник