これは、なにをしたくて書いたもの?
どのURLパスにも、とりあえずHTTPステータスコードOKを返してくれるHTTPサーバーを探していまして。
いくつか探してみたのですが、http-echoでいいかなと。
http-echo
HashiCorpの提供する、「hello world」的なHTTPサーバーでデモなどで使うことを意図したものです。
GitHub - hashicorp/http-echo: A tiny go web server that echos what you start it with!
Dockerイメージもあります。
これを使うと、引数で指定した決まった値を返すだけのHTTPサーバーを起動できます。
試してみましょう。今回はバージョン0.2.3を使います。
$ curl -sL -O https://github.com/hashicorp/http-echo/releases/download/v0.2.3/http-echo_0.2.3_linux_amd64.tar.gz $ tar xf http-echo_0.2.3_linux_amd64.tar.gz
バージョン確認。
$ ./http-echo -version http-echo v0.2.3 (6d116d0+CHANGES)
引数をなにも指定しないと、-text
オプションをつけなさいと怒られます。
$ ./http-echo Missing -text option!
指定してみましょう。
$ ./http-echo -text 'Hello World!!' 2020/11/13 00:40:38 Server is listening on :5678
起動しました。アクセスしてみます。
$ curl localhost:5678 Hello World!! $ curl localhost:5678/foo Hello World!! $ curl localhost:5678/foo/bar Hello World!!
どのパスにアクセスしても、-text
オプションで指定した値が返ります。
ちなみに、アクセスログも出力されます。
2020/11/13 00:41:05 localhost:5678 127.0.0.1:55306 "GET / HTTP/1.1" 200 14 "curl/7.68.0" 31.238µs 2020/11/13 00:41:08 localhost:5678 127.0.0.1:55308 "GET /foo HTTP/1.1" 200 14 "curl/7.68.0" 15.538µs 2020/11/13 00:41:10 localhost:5678 127.0.0.1:55310 "GET /foo/bar HTTP/1.1" 200 14 "curl/7.68.0" 10.199µs
-listen
オプションで、バインドさせるアドレスおよびポートを指定することもできます。
$ ./http-echo -text 'Hello World!!' -listen :9999 2020/11/13 00:42:25 Server is listening on :9999 $ ./http-echo -text 'Hello World!!' -listen localhost:9999 2020/11/13 00:42:42 Server is listening on localhost:9999
:[port]
だと、全アドレスに対してバインドします。
あと、ヘルスチェックエンドポイントも作られていたりします。/health
です。
$ curl localhost:5678/health {"status":"ok"}
https://github.com/hashicorp/http-echo/blob/v0.2.3/main.go#L48-L49
でも、使いますかね???
Dockerイメージを使う場合。
$ docker container run -it --rm --name echo hashicorp/http-echo:latest -text 'Hello World!!'
とりあえず、今回のお題に書いた目的なら、これでいいかなと。