http 20161127.1449(in MELPA)
Yet another HTTP client

概要

去年は『Rubyによるクローラー開発技法』(共著) を出版し、
お蔭様で大好評となっています。

買ってくださった方々、本当にありがとうございます。

Webアクセスを自動化したい、
クローラーを作りたい
そういった場合はまずHTTPリクエストとレスポンスを調査する必要があります。

さて、今回紹介する http.el は対話型HTTPクライアントです。

バッファ(ファイル)に1つ以上のHTTPリクエストを書いて送信すると
別バッファにてレスポンスが表示されます。

使い方はたった3ステップです。

  1. HTTPリクエストを書く
  2. M-x http-mode
  3. C-c C-cで送信!

なお、使用例で使っている https://httpbin.org/
HTTPクライアント開発のためのサイトで
手軽にPOSTリクエストをテストできます。

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。

(package-initialize)
(setq package-archives
      '(("gnu" . "http://elpa.gnu.org/packages/")
        ("melpa" . "http://melpa.org/packages/")
        ("org" . "http://orgmode.org/elpa/")))

初めてhttpを使う方は
以下のコマンドを実行します。

M-x package-install http

アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。

M-x package-install package-utils (初めてアップグレードする場合のみ)
M-x package-utils-upgrade-by-name http

使用例

misc/example.txtより抜粋!

一番上に「# -*- http -*-」と書くことで、
そのファイルを再び開いたときは自動的にhttp-modeになります。

# -*- http -*-
# はコメント
# GETリクエストは単純に1行でよい
# 
## 自分のIPアドレス
GET https://httpbin.org/ip
## xmlを表示する
GET https://httpbin.org/xml

## ヘッダをつける
POST https://httpbin.org/post?foo=bar
User-Agent: Emacs24

## POSTリクエスト
# ヘッダとデータの間には空行を入れる
POST https://httpbin.org/post?val=key
User-Agent: Emacs24
Content-Type: application/json

{
  "foo": "bar"
}

一番下のPOSTリクエストを実行すると

{
  "url": "https:\/\/httpbin.org\/post?val=key",
  "origin": "1.23.45.67",
  "json": {
    "foo": "bar"
  },
  "headers": {
    "User-Agent": "Emacs24",
    "Host": "httpbin.org",
    "Content-Type": "application\/json",
    "Content-Length": "21",
    "Accept-Encoding": "deflate, gzip",
    "Accept": "*\/*"
  },
  "form": null,
  "files": null,
  "data": "\n{\n  \"foo\": \"bar\"\n}\n\n",
  "args": {
    "val": "key"
  }
}
// HTTP/1.1 200 OK
// Server: nginx
// Date: Thu, 21 May 2015 01:24:00 GMT
// Content-Type: application/json
// Content-Length: 435
// Connection: keep-alive
// Access-Control-Allow-Origin: *
// Access-Control-Allow-Credentials: true

と出てきます。

本サイト内の関連パッケージ


本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。