Go Fiber 및 PlanetScale로 REST API 구축 - 3부
스키마 배포
이제
add-users-table
분기를 main
분기에 배포할 차례입니다.$ pscale deploy-request create fiber-pscale add-users-table
Deploy request #1 successfully created.
이제 대시보드를 확인하면 여기에서 개발 분기에서 기본 분기로 스키마 변경을 요청한 것을 볼 수 있습니다. Git에 익숙하다면 Pull Request와 비슷합니다.
이제 요청을 승인하면 PlanetScale이 다운타임 없이 새 스키마를 기본 브랜치에 자동으로 적용합니다.
$ pscale deploy-request deploy fiber-pscale 1
Successfully deployed dhacze78ukhv from add-users-table to main.
이제 돌아가서 대시보드를 확인하세요. 배포되었습니다!🎊
더 이상 분기에서 스키마를 변경할 필요가 없으면 이제 안전하게 삭제할 수 있습니다.
$ pscale branch delete fiber-pscale add-users-table
핸들러
users.go
디렉토리 내에 handlers
라는 파일을 만듭니다. 이제 응용 프로그램이 데이터베이스와 통신할 수 있도록 기본 분기에 대한 연결을 만듭니다.$ pscale connect fiber-pscale main --port 3309
Note: It's recommended to use a secure connection while connecting to the main branch once you deployed your application. More https://docs.planetscale.com/reference/secure-connections
사용자 만들기
함수 CreateUser를 만들고
createUserRequest
에서 users.go
구조체를 초기화합니다.package handlers
import (
"net/http"
"github.com/gofiber/fiber/v2"
"github.com/maful/fiber-pscale/models"
)
type createUserRequest struct {
Name string `json:"name" binding:"required"`
Email string `json:"email" binding:"required"`
Website string `json:"website" binding:"required"`
}
func CreateUser(c *fiber.Ctx) error {
req := &createUserRequest{}
if err := c.BodyParser(req); err != nil {
return c.Status(http.StatusBadRequest).JSON(&fiber.Map{
"message": err.Error(),
})
}
user := models.User{
Name: req.Name,
Email: req.Email,
Website: req.Website,
}
models.DB.Create(&user)
return c.Status(fiber.StatusCreated).JSON(&fiber.Map{
"user": user,
})
}
열기
main.go
, 해당 함수를 호출하는 새 처리기를 추가합니다.import (
// ...
"github.com/maful/fiber-pscale/handlers"
)
// app.Get("/" ...
app.Post("/users", handlers.CreateUser)
앱을 실행하고 사용자 생성을 시도합니다.
$ curl --location --request POST 'http://localhost:3000/users' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "John",
"email": "[email protected]",
"website": "https://example.com"
}'
응답
{
"user": {
"ID": 1,
"CreatedAt": "2021-09-06T20:04:31.022+07:00",
"UpdatedAt": "2021-09-06T20:04:31.022+07:00",
"DeletedAt": null,
"name": "John",
"email": "[email protected]",
"website": "https://example.com"
}
}
모든 사용자 나열
create 함수 아래에 GetUsers라는 새 함수를 만듭니다.
func GetUsers(c *fiber.Ctx) error {
var users []models.User
models.DB.Find(&users)
return c.Status(http.StatusOK).JSON(&fiber.Map{
"users": users,
})
}
함수를 앱에 등록하고 사용자 생성 핸들러 위에 배치합니다.
app.Get("/users", handlers.GetUsers)
// app.Post("/users...
기존 앱을 중지하고 다시 실행하십시오. 변경 시 앱이 자동으로 새로고침되지 않으므로 항상 이렇게 해야 합니다.
curl --location --request GET 'http://localhost:3000/users'
응답
{
"users": [
{
"ID": 1,
"CreatedAt": "2021-09-06T20:04:31.022+07:00",
"UpdatedAt": "2021-09-06T20:04:31.022+07:00",
"DeletedAt": null,
"name": "John",
"email": "[email protected]",
"website": "https://example.com"
}
]
}
사용자 보기
하단에
GetUser
라는 새로운 함수를 추가합니다.func GetUser(c *fiber.Ctx) error {
var user models.User
if err := models.DB.First(&user, "id = ?", c.Params("id")).Error; err != nil {
return c.Status(http.StatusNotFound).JSON(&fiber.Map{
"message": "Record not found!",
})
}
return c.Status(http.StatusOK).JSON(&fiber.Map{
"user": user,
})
}
main.go에 새 처리기를 추가합니다.
// ...
app.Get("/users", handlers.GetUsers)
app.Get("/users/:id", handlers.GetUser) // new
이제 ID가 1인 사용자 세부 정보를 가져오려고 합니다.
curl --location --request GET 'http://localhost:3000/users/1'
응답
{
"user": {
"ID": 1,
"CreatedAt": "2021-09-06T20:04:31.022+07:00",
"UpdatedAt": "2021-09-06T20:04:31.022+07:00",
"DeletedAt": null,
"name": "John",
"email": "[email protected]",
"website": "https://example.com"
}
}
존재하지 않는 아이디를 얻으려고 하면
curl --location --request GET 'http://localhost:3000/users/100'
{
"message": "Record not found!"
}
Reference
이 문제에 관하여(Go Fiber 및 PlanetScale로 REST API 구축 - 3부), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/maful/build-rest-api-with-go-fiber-and-planetscale-part-3-gpc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)