Gin은 Go언어로 작성된 HTTP web 프레임워크이다. 기존에 go에서 사용되던 martini 라는 프레임워크에 비해 성능을 40배가까이 향상 시켰다고 한다.
// album represents data about a record album.
type album struct {
ID string `json:"id"`
Title string `json:"title"`
Artist string `json:"artist"`
Price float64 `json:"price"`
}
‘json:”전달할 이름”’ 을 변수 선언 뒤에 붙여주면, json으로 직렬화 할 때 필드의 이름을 직접 설정할 수 있다. 만약 이를 붙이지 않으면 구조체내에서 설정한 대문자 변수 명이 필드의 이름이 된다.
🌱 json 형태에서는 대문자 변수명을 일반적으로 사용하지 않는다.
// getAlbums responds with the list of all albums as JSON.
func 함수이름(c *gin.Context) {
c.IndentedJSON(http.StatusOK, 전달할 구조체 or 구조체 배열)
}
func main() {
router := gin.Default()
router.GET("/albums", 함수이름)
router.Run("localhost:8080")
}
// postAlbums adds an album from JSON received in the request body.
func 함수이름(c *gin.Context) {
var newAlbum album
// Call BindJSON to bind the received JSON to
// newAlbum.
if err := c.BindJSON(&newAlbum); err != nil {
return
}
// Add the new album to the slice.
albums = append(albums, newAlbum)
c.IndentedJSON(http.StatusCreated, newAlbum)
}
...
func main() {
router := gin.Default()
router.POST("/albums", 함수이름)
router.Run("localhost:8080")
}
// getAlbumByID locates the album whose ID value matches the id
// parameter sent by the client, then returns that album as a response.
func getAlbumByID(c *gin.Context) {
id := c.Param("id")
// Loop over the list of albums, looking for
// an album whose ID value matches the parameter.
for _, a := range albums {
if a.ID == id {
c.IndentedJSON(http.StatusOK, a)
return
}
}
c.IndentedJSON(http.StatusNotFound, gin.H{"message": "album not found"})
}
reference: