Go Fiber 및 PlanetScale로 REST API 구축 - 4부

12815 단어 apiplanetscalego

사용자 업데이트



다시 사용자 핸들러에 UpdateUser라는 새 함수를 추가합니다.

func UpdateUser(c *fiber.Ctx) error {
    // first, check if the user is exist
    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!",
        })
    }

    // second, parse the request body
    request := &updateUserRequest{}
    if err := c.BodyParser(request); err != nil {
        return c.Status(http.StatusBadRequest).JSON(&fiber.Map{
            "message": err.Error(),
        })
    }

    // third, update the user
    updateUser := models.User{
        Name:    request.Name,
        Email:   request.Email,
        Website: request.Website,
    }
    models.DB.Model(&user).Updates(&updateUser)

    return c.Status(http.StatusOK).JSON(&fiber.Map{
        "user": user,
    })
}


업데이트 사용자를 main.go에 등록

app.Put("/users/:id", handlers.UpdateUser)


이제 응용 프로그램을 다시 실행하십시오. 이전에 생성한 사용자를 업데이트합니다.

$ curl --location --request PUT 'http://localhost:3000/users/1' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "Machine name"
}'


응답

{
  "user": {
    "ID": 1,
    "CreatedAt": "2021-09-08T08:07:25.042+07:00",
    "UpdatedAt": "2021-09-08T08:15:52.249+07:00",
    "DeletedAt": null,
    "name": "Machine name",
    "email": "[email protected]",
    "website": "google.com"
  }
}


사용자가 존재하지 않을 때

$ curl --location --request PUT 'http://localhost:3000/users/100' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "Machine name"
}'


응답

{
  "message": "Record not found!"
}


사용자 삭제



사용자 처리기 하단에 사용자 삭제 기능을 추가합니다.

func DeleteUser(c *fiber.Ctx) error {
    // first, check if the user is exist
    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!",
        })
    }

    // second, delete the user
    models.DB.Delete(&user)

    return c.Status(http.StatusOK).JSON(&fiber.Map{
        "message": "Success",
    })
}


기능 등록

app.Delete("/users/:id", handlers.DeleteUser)


따라서 새 사용자를 다시 생성하십시오.

$ curl --location --request POST 'http://localhost:3000/users' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "Badu",
    "email": "[email protected]",
    "website": "google.com"
}'


응답에서 ID를 확인하면 해당 사용자를 삭제합니다.

$ curl --location --request DELETE 'http://localhost:3000/users/2'


응답

{
  "message": "Success"
}


요약



PlanetScale은 개발 수명 주기에 사용할 수 있는 개발자 플랜 가격을 제공하며 완전 무료입니다. 각 데이터베이스에 대해 최대 3개의 데이터베이스와 3개의 분기를 생성할 수 있습니다. 기본적으로 이것은 서버리스 데이터베이스를 전혀 사용하지 않는 개발자와 스키마를 만드는 방법에 대한 새로운 워크플로에 대한 새로운 지식이 될 것입니다.

Fiber는 Go에서 애플리케이션을 구축하기 위한 훌륭한 웹 프레임워크이며 빠르고 풍부한 기능을 갖추고 있으며 문서도 훌륭합니다.

이 게시물은 Fiber 및 PlanetScale 데이터베이스를 사용하는 방법에 대한 기본적인 이해를 제공하는 간단한 웹 API 애플리케이션일 뿐입니다. 다음에는 동일한 기술 스택으로 더 복잡한 웹 API를 구축할 것입니다.

여기에서 전체 소스 코드를 다운로드하십시오repository.

고맙습니다.

좋은 웹페이지 즐겨찾기