回答:
restclientは最も「インタラクティブな」モードです。
これは、HTTP REST Webサービスを手動で調査およびテストするためのツールです。プレーンテキストクエリシートからクエリを実行し、結果をきれいに印刷されたXML、JSON、さらには画像として表示します。
ワークフローの例はhttp://jakemccrary.com/blog/2014/07/04/using-emacs-to-explore-an-http-api/で確認できます。
request.el -HTTPスイスナイフ。
(request
"http://httpbin.org/get"
:params '(("key" . "value") ("key2" . "value2"))
:parser 'json-read
:success (function*
(lambda (&key data &allow-other-keys)
(message "I sent: %S" (assoc-default 'args data)))))
emacs-web-「アイデアは、常にコールバックを使用して応答を収集することです。」
JSONコールバックフォームでは、データのみを収集できます。
;; -*- lexical-binding: t -*-
(require 'web)
(web-json-post
(lambda (data &rest stuff)
(message "%S" data))
:url "https://httpbin.org/post")
古い質問、はい...しかし、誰かがこれをグーグルで検索した場合、別のオプションは、Org Babelを使用してob-http
...(melpaからインストールできます。)
を使用するとorg-babel
、.org
「http
」コードブロックを含むファイルを作成できます。これらのブロックが評価されると、HTTP要求を作成し、結果として応答を返します。
これらのブロックに「#+NAME:
」属性がある場合、その結果を他のorg-babel
ブロックで使用できます。これにより、HTTPリクエストの結果を使用した、かなりきちんとした文芸的プログラミングが可能になります。
たとえば、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
、2つの変数をカスタマイズする必要があります:org-src-lang-modes
、およびorg-babel-load-languages
。
そのため、を実行M-x customize-variable
することにより、それぞれをカスタマイズして以下を含めることができます。
org-src-lang-modes
:この変数をカスタマイズして、もう1つの言語マッピングを含めることで、リストの最後にもう1つの値を挿入できます。
String: http
Symbol: ob-http
その後C-x C-s
、そのカスタマイズを保存できます。
org-babel-load-languages
:有効なorg
言語のリストにアイテムをもう1つ追加する必要があります。「http
」。
ただし、オプションが可能なオプションにない場合は、リストに手動で追加する必要があるかもしれませんが、「状態」をクリックし、「」を選択し:
てLisp式を表示することにより、それを行うことができます。最後の閉じ括弧の前:
(http . t)
その後、迅速C-x C-s
かつM-x org-reload
必要なすべてのはずです。
私はまさにこの目的のためにhttpreplを書きました。HTTPリクエストを発行できるcomintベースのreplを提供します。
https://github.com/gregsexton/httprepl.el
要求の結果を消費する関数を簡単に追加できます。これらは通常、きれいな印刷などに使用されますが、組み込みのjsonライブラリを使用すると、elisp構造への解析が簡単になります。