Go Fiber 소개
고섬유란?
Fiber은 Express에서 크게 영감을 받은 웹 프레임워크로 노드 개발자가 작업하기에 완벽합니다.
그것은 Fasthttp 엔진 위에 구축되었으며 여기에 일부 benchmarks가 있습니다. 또한 메모리 할당 오버헤드가 상당히 낮습니다. 예를 들어 이 기사를 작성하는 동안 메모리만
~16mb
차지했는데 정말 놀랍습니다!이 기사에서는 Fiber 프레임워크의 느낌을 얻기 위해 매우 간단한 모의 API 경로를 구현해 보겠습니다.
기사의 코드는 여기repository에서 사용할 수 있습니다.
시작하기
go 문서에서 바이너리를 설치하여 시스템에 직접 go를 설치할 수 있습니다https://golang.org/doc/install.
![](https://s1.md5.ltd/image/0da258d366e674a8b8cb0b3a3f8eb741.png)
(선택 과목)
개인적으로 나는 docker를 사용하는 것을 좋아하므로 시스템에 아무것도 설치할 필요가 없습니다.
golang
도커 이미지를 가져오겠습니다.docker pull golang
프로젝트 디렉터리 만들기
mkdir go-mock-api
cd go-mock-api
이제 포트
4000
를 바인딩하고 현재 디렉터리(go 프로젝트 디렉터리)를 볼륨으로 마운트하고 golang 이미지를 실행합니다.docker run -itd -p 4000:4000 --name golang -v "$(pwd):/app" golang
실행 중인 golang 컨테이너를 실행하고 연결해 보겠습니다.
docker exec -it -w /app golang bash
이것은 우리를 golang 도커 이미지로 떨어뜨릴 것입니다. 이제 go 버전을 확인하고 시작하겠습니다.
go version
참고: docker를 사용하는 경우 아래의 모든 단계는 golang 컨테이너 내에서 실행됩니다.
설치
api
모듈을 초기화하자go mod init api
광섬유 설치
go get -u github.com/gofiber/fiber/v2
리포지토리의 readme에 표시된 대로 포트
api.go
에서 샘플 Hello World 서버로 4000
를 생성해 보겠습니다.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은 개발에 유용한 Go 앱의 실시간 재로드를 지원합니다. 이것은 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
또는 .zshrc
파일에서 export PATH=$PATH:$HOME/go/bin/
로 내보냈는지 확인하십시오.이제 코드가 실행되는 것을 볼 수 있어야 하며 변경 사항이 있을 때 go 프로그램을 다시 실행할 필요 없이 자동으로 다시 로드되어야 합니다!
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)
}
POST 경로 생성
마찬가지로 기본 기능에
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
기능을 사용하여 경로를 구성할 수 있습니다. Express에서 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을 사용하고 있습니다.
사용자 가져오기
![](https://s1.md5.ltd/image/c4990fb9dff545a4a7405b31f20666ec.png)
사용자 만들기
![](https://s1.md5.ltd/image/b5439bc0fc9d4d91b7abdf2a447e9bbf.png)
문제가 발생하면 언제든지 연락해 주세요.
피드백은 언제나 환영합니다, 즐겁게 보내세요!
Reference
이 문제에 관하여(Go Fiber 소개), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/karanpratapsingh/introduction-to-go-fiber-2m0a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)