ゴーゴーファイバー入門
ゴーゴーファイバーとは
Fiber ウェブフレームワークExpress そして、それはノード開発者のために働くのに最適です.
それは上に構築されますFasthttp エンジンはこちらbenchmarks . また、メモリ割り当てのオーバーヘッドはかなり低い.例えば、この記事を書いている間だけ
~16mb
メモリの、驚くべきだった!本稿では、ファイバーフレームワークの感触を得るために、非常に単純な模擬APIルートを実装しましょう
記事からのコードは、これで利用できますrepository
始める
go docsからバイナリをインストールすることで、システムに直接goをインストールできますhttps://golang.org/doc/install
(オプション)
個人的にはDockerを使うのが好きなので、システムに何もインストールする必要はありません
引っ張りましょう
golang
ドッカーイメージdocker pull golang
プロジェクトディレクトリmkdir go-mock-api
cd go-mock-api
今度は港を縛ります4000
そして、現在のディレクトリ(go project dir)をボリュームとしてマウントし、ゴランイメージを実行しますdocker run -itd -p 4000:4000 --name golang -v "$(pwd):/app" golang
ランニングゴランコンテナに走りましょうdocker exec -it -w /app golang bash
これはゴングDockerイメージに私たちをドロップする必要があります.さあ、goのバージョンをチェックしてgo version
注: Dockerを使用している場合、以下の手順はGolangコンテナ内で実行されますインストール
初期化する
api
モジュールgo mod init api
インストールファイバーgo get -u github.com/gofiber/fiber/v2
つくりましょうapi.go
ポートのサンプルHello World Serverで4000
リポジトリのREADMEに示すように.package main
import "github.com/gofiber/fiber/v2"
func main() {
app := fiber.New()
app.Get("/", func(ctx *fiber.Ctx) error {
return ctx.SendString("Hello, World!")
})
app.Listen(":4000")
}
開発
Reflex 開発のための素晴らしいアプリケーションのライブリロードを支援します.それはとても似ているnodemon , あるいは、単に使用することができます
go run
プログラムを実行するコマンド.go get github.com/cespare/reflex
始めましょう!reflex -g '*.go' go run api.go --start-service
Starting service...
┌───────────────────────────────────────────────────┐
│ Fiber v2.13.0 │
│ http://127.0.0.1:4000 │
│ (bound on host 0.0.0.0 and port 4000) │
│ │
│ Handlers ............. 2 Processes ........... 1 │
│ Prefork ....... Disabled PID .............. 3315 │
└───────────────────────────────────────────────────┘
注:確認してくださいPATH
あなたの輸出.bashrc
or .zshrc
ファイル名export PATH=$PATH:$HOME/go/bin/
今すぐあなたのコードを実行している必要がありますし、自動再ロードするときに再プログラムを実行することなく何かを変更する必要があります!GETルートの作成
繊維を輸入しましょう
import "github.com/gofiber/fiber/v2"
加えるuser
主関数へのルートapp.Get("/user", getUserHandler)
を加えましょうgetUserHandler
を返します.ここでは、模擬ユーザーを返します.type User struct {
Name string `json:"name"`
Twitter string `json:"twitter"`
}
func getUserHandler(ctx *fiber.Ctx) error {
user := User{
Name: "Karan",
Twitter: "karan_6864",
}
return ctx.Status(fiber.StatusOK).JSON(user)
}
ポストルートの作成
同様に、Aを加えましょう
post
主関数へのルート app.Post("/user/create", createUserHandler)
を加えましょうcreateUserHandler
を返します.ここで、我々は単に体を解析して、反応でそれを送り返しますfunc createUserHandler(ctx *fiber.Ctx) error {
body := new(User)
err := ctx.BodyParser(body)
if err != nil {
ctx.Status(fiber.StatusBadRequest)
return err
}
user := User{
Name: body.Name,
Twitter: body.Twitter,
}
return ctx.Status(fiber.StatusOK).JSON(user)
}
ミドルウェア
繊維が付属したログオンミドルウェアを追加しましょう
import (
"github.com/gofiber/fiber/v2/middleware/logger"
)
このミドルウェアをmain
機能app.Use(logger.New())
これは以下に示すようにログを与えます12:04:01 | 200 | 1ms | 172.17.0.1 | GET | /user
12:04:27 | 200 | 0s | 172.17.0.1 | POST | /user/create
また、カスタムミドルウェアを定義することができます app.Use(func(ctx *fiber.Ctx) error {
fmt.Println("Sample middleware")
return ctx.Next()
})
ルータ
我々のルートを整理することができます
Group
関数は、どのように我々は非常に似てrouting 急行. userApi := app.Group("/user")
userApi.Get("/", getUserHander)
userApi.Post("/create", createUserHandler)
静的ファイルの提供
サーバにしようとしましょう
public
フォルダは、我々は単に使用することができますStatic
以下の関数app.Static("/", "./public")
それを試してみましょう!
こちらがファイナル
api.go
package main
import (
"fmt"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/logger"
)
type User struct {
Name string `json:"name"`
Twitter string `json:"twitter"`
}
func getUserHander(ctx *fiber.Ctx) error {
user := User{
Name: "Karan",
Twitter: "karan_6864",
}
return ctx.Status(fiber.StatusOK).JSON(user)
}
func createUserHandler(ctx *fiber.Ctx) error {
body := new(User)
err := ctx.BodyParser(body)
if err != nil {
fmt.Println(err)
ctx.Status(fiber.StatusBadRequest)
return err
}
user := User{
Name: body.Name,
Twitter: body.Twitter,
}
return ctx.Status(fiber.StatusOK).JSON(user)
}
func main() {
app := fiber.New()
app.Use(logger.New())
userApi := app.Group("/user")
userApi.Get("/", getUserHander)
userApi.Post("/create", createUserHandler)
app.Listen(":4000")
}
使っているInsomnia 模擬終点をテストするにはユーザを得る
ユーザーの作成
あなたがどんな問題にでも直面するならば、私に達することを感じてください.
フィードバックは常に歓迎され、楽しい時を過す!
Reference
この問題について(ゴーゴーファイバー入門), 我々は、より多くの情報をここで見つけました https://dev.to/karanpratapsingh/introduction-to-go-fiber-2m0aテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol