📖

Gofiberで簡単なWebサーバーを作る

2025/03/05に公開

Fiber(Gofiber)を導入する

環境

  • MacBook Pro M2
  • HomeBrew導入済

環境構築

まず、brewを使ってGoを導入します。

brew install go

これでGoが入ります。

source ~/.zshrc
go version

を用いて確認してください。

プロジェクトの作成

mkdir <プロジェクト名>
cd <プロジェクト名>
go mod init <プロジェクト名>

Fiberを導入

FiberはGoのパッケージです。
一般的なパッケージも同様に導入します。

go get github.com/gofiber/fiber/v2

Hello,World

公式ドキュメントのソースコードを利用します。

package main

import "github.com/gofiber/fiber/v2"

func main() {
	app := fiber.New()

	app.Get("/", func(c *fiber.Ctx) error {
		return c.SendString("Hello, World!")
	})

	app.Listen(":3000")
}

app.[Method]の紹介

FiberはNodeライクに記述できることが大きな特徴です。
公式ドキュメントから、いくつかの例を紹介します。

単純なルーティング

app.Get("/hoge", func(c *fiber.Ctx) error {
	return c.SendString("Hello, World!")
})

パラメータを取得

app.Get("params/:value", func(c *fiber.Ctx) error {
	return c.SendString("value: " + c.Params("value"))
	// => Get request with value: hello world
})

:value(:hoge, :fooなど)を用いて値を取得できます。

パラメータを取得(パラメータは任意)

app.Get("params/:name?", func(c *fiber.Ctx) error {
	if c.Params("name") != "" {
		return c.SendString("Hello " + c.Params("name"))
		// => Hello john
	}
	return c.SendString("Where is john?")
})

基本的に先ほどと同じですが、

  • ?がついていない場合はexample.com/params/に対してのリクエストに対してエラーを返します。
  • ?がついている場合はexample.com/params/に対してのリクエストにも処理が実行されます。

ワイルドカード

app.Get("/wildCards/*", func(c *fiber.Ctx) error {
    return c.SendString("API path: " + c.Params("*"))
    // => API path: user/john
})

パスを取得せず、example.com/wildCards/以下のリクエストに同じ処理を行えます。

静的ルーティング

app.Static("/staticFiles", "./thisIsStaticFiles")

他のFWなどではpublicディレクトリなどとされているものと同じ挙動をします。
静的ファイルを配置する場合などに使えます。

エラー

app.Get("/newError", func(c *fiber.Ctx) error {
	return fiber.NewError(782, "Custom error message")
})

HTTPに782エラーは存在しませんが、404エラーなど任意のエラーを設定できます。

Discussion