0
0

Go&echoで簡単にAPI作成

Last updated at Posted at 2024-06-13

作るものは「最低限必要なものを揃えたmain.go」のみ。
ゴールは「local起動し、ブラウザから確認」&「curlコマンドからAPIを叩けること」です。

フォルダ構成

めちゃ簡素。
image.png

つくりかた

  1. main.go ファイルを作成
  2. go mod init を実行、 go.mod, go.sum ファイルが生成される

以上!

main.go の中身

こちらの記事を参考にそのまま使わせていただきました。
今回はファイル名だけserver.go → main.goとしています。
ミドルウェアについて、それぞれ

	e.Use(middleware.Logger())  // ここからlogが取得できる
	e.Use(middleware.Recover()) // サーバが落ちたとき、自動で再起動する

という意味らしいです。

実行

go run main.go で実行

ターミナルが以下のような表示になっていればOK。
image.png

~APIが叩けるか確認~

1.ブラウザから確認

ブラウザを開き、URLにhttp://localhost:1323/と入力。
Hello,World!と返されていればOK。
image.png

2.ターミナルから確認

別ターミナルを開き、curl http://localhost:1323/を実行。

Hello, World!

と返されていればOK。

また、Hello,World!が返された後に
go run main.goを実行したターミナルを見ると

{"time":"2024-06-14T00:38:55.64143254+09:00","id":"","remote_ip":"127.0.0.1","host":"localhost:1323","method":"GET","uri":"/","user_agent":"curl/7.81.0","status":200,"error":"","latency":5499,"latency_human":"5.499µs","bytes_in":0,"bytes_out":13}

(見やすくすると↓)

{
"time":"2024-06-14T00:38:55.64143254+09:00",
"id":"",
"remote_ip":"127.0.0.1",
"host":"localhost:1323",
"method":"GET",
"uri":"/",
"user_agent":"curl/7.81.0",
"status":200,
"error":"",
"latency":5499,
"latency_human":"5.499µs",
"bytes_in":0,
"bytes_out":13
}

という文字があります。
これがmain.goの

e.Use(middleware.Logger())  // ここからlogが取得できる

によって吐き出されている部分です。

補足

ログを絞る(カスタムする)方法。
main.goにある

	e.Use(middleware.Logger())  // ここからlogが取得できる

を↓に置き換えます。

	e.Use(middleware.LoggerWithConfig(middleware.LoggerConfig{
    	Format: `[${time_rfc3339}] ${method} ${uri} ${status}\n`,
	}))

この状態でgo run main.goを実行し、
別ターミナルを開きcurl http://localhost:1323/を実行します。
go run main.goを実行したターミナルに戻ると、

[2024-06-14T00:45:52+09:00] GET / 200 \n

というログが確認できます。
元のログが↓だったので、大分スッキリ表示できました。

{
"time":"2024-06-14T00:38:55.64143254+09:00",
"id":"",
"remote_ip":"127.0.0.1",
"host":"localhost:1323",
"method":"GET",
"uri":"/",
"user_agent":"curl/7.81.0",
"status":200,
"error":"",
"latency":5499,
"latency_human":"5.499µs",
"bytes_in":0,
"bytes_out":13
}

参考

【Go】echoを使ってAPIサーバーを3分で構築してみる

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0