CLOVER🍀

That was when it all began.

どのリクエストにも決まったレスポンスを返す、http-echoサーバー

これは、なにをしたくて書いたもの?

どの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イメージもあります。

Docker Hub / http-echo Server

これを使うと、引数で指定した決まった値を返すだけの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!!'

とりあえず、今回のお題に書いた目的なら、これでいいかなと。