@peccul is peccu

(love peccu '(emacs lisp cat outdoor bicycle mac linux coffee))

EmacsでAPIをたたく。restclient.el

restclient.elというものがありまして、 テキストファイルにAPI呼び出しを列挙しておくと、C-c C-cなどで実行できます。

github.com

JSONXMLならレスポンスをpretty-printしてくれます。

postリクエストの例。バッファにこんな風に書きます。(GitHubの例より)

POST https://jira.atlassian.com/rest/api/2/search
Content-Type: application/json

{
        "jql": "project = HSP",
        "startAt": 0,
        "maxResults": 15,
        "fields": [
                "summary",
                "status",
                "assignee"
        ]
}

POST https://... の部分でC-c C-cすると別のウィンドウにレスポンスが表示されます。

このテキストがそのままAPI仕様書にできそう。

Emacs24.4から搭載された json-pretty-print をレスポンスの表示に使っているのですが、手元では古いjson.elがload-pathの上位にいて、利用できなくて一瞬困りました。

gongo.hatenablog.com

古いjson.elを消して、Emacs.appに含まれる新しいjson.elをロードしたらうまく動きました。

ちなみに、localhostへのアクセスは、url.elのバグで落ちるので、127.0.0.1としてアクセスしないといけません。

HTTP GET http://localhost:8080/hogehoge Headers:[nil] Body:[]
Contacting host: localhost:8080
error in process sentinel: if: peculiar error: "failed with code 22
", :host, "localhost", :service, 8080

github.com

あと、マルチバイト文字列を送信するときは、JSONをリージョン選択し、M-x json-pretty-printして "\u307b\u3052" (数値参照?)みたいな形式にする必要があります。