GO: Gin Web Framework
GO: Gin Web Framework (Restful API)
go ์ธ์ด๋ฅผ ์ฐ๋ ๋ง์ดํฌ๋ก ์น ํ๋ ์์ํฌ์ด๋ค.
Quickstart
$ go mod init example/web-service-gin
go mod init ๋ช ๋ น์ด๋ฅผ ํตํด ์ข ์์ฑ๊ด๋ฆฌ์ ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค.
๊ตฌ์กฐ์ฒด ์ ์ธ
type album struct {
ID string `json:"id"`
Title string `json:"title"`
Artist string `json:"artist"`
Price float64 `json:"price"`
}
var albums = []album{
{ID: "1", Title: "Blue Train", Artist: "John Coltrane", Price: 56.99},
{ID: "2", Title: "Jeru", Artist: "Gerry Mulligan", Price: 17.99},
{ID: "3", Title: "Sarah Vaughan and Clifford Brown", Artist: "Sarah Vaughan", Price: 39.99},
}
์์ ๊ฐ์ด ๊ตฌ์กฐ์ฒด๋ฅผ ์ ์ธํ๊ณ ์ ์ธํ ๊ตฌ์กฐ์ฒด์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋๋ค.
๊ตฌ์กฐ์ฒด์ ํ๋ ๋์ ์ญ๋ฐ์ดํ๊ฐ ๋ถ๋ ์ด์ :
Raw string์ ๋ณดํต JSON ํ์์ String์ ์ฒ๋ฆฌํ ๋ ์ข
์ข
์ฌ์ฉํ๋ค. JSON key, value๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์๋ฐ์ดํ๋ก ์ด๋ฃจ์ด์ง string์ด๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ Interpreted string์ผ๋ก ๋ํ๋ด๊ฒ ๋๋ฉด ์๋ฐ์ดํ ๊ตฌ๋ถ์ ๋ช
ํํ๊ฒ ํด์ค์ผ ํด์ ๋ฒ๊ฑฐ๋กญ๊ธฐ ๋๋ฌธ์ด๋ค.
***
ํจ์
ํ์ผ๋์ ํจ์๋ฅผ ์ ์ธํ๋๊ฒ ์ข์ง๋ง Go๋ ์ด๋์ ์์นํด๋ ์๊ด์๋ค. ###
func getAlbums(c *gin.Context) {
c.IndentedJSON(http.StatusOK, albums)
}
gin.Context : json์ ์ ํจ์ฑ์ ๊ฒ์ฌํ๊ณ ์ง๋ ฌํ๋ฅผ ๋ด๋น
Context.IndentedJSON: json์ ์ง๋ ฌํํ๊ณ ์๋ต์ ์ถ๊ฐํ๊ธฐ ์ํด์ ์ด๋ค
</br>
func postAlbums(c *gin.Context) {
var newAlbum album
if err := c.BindJSON(&newAlbum); err != nil {
return
}
albums = append(albums, newAlbum)
c.IndentedJSON(http.StatusCreated, newAlbum)
}
Context.BindJSON: request body ๋ฅผ newAlbum ๋ณ์์ ๋งตํ
</br>
func getAlbumByID(c *gin.Context) {
id := c.Param("id")
for _, a := range albums {
if a.ID == id {
c.IndentedJSON(http.StatusOK, a)
return
}
}
c.IndentedJSON(http.StatusNotFound, gin.H{"message": "album not found."})
}
Context.Param: URL ๋ก ๋ถํฐ id path parameter์ ์ถ์ถ ***
main ํจ์
func main() {
router := gin.Default()
router.GET("/albums", getAlbums)
router.POST("/albums", postAlbums)
router.GET("/albums/:id", getAlbumByID)
router.Run("localhost:8080")
}
Default: Gin์์ ๊ธฐ๋ณธ์ ์ธ ๋ผ์ฐํฐ๋ฅผ ์์ฑ
๊ฒฐ๊ณผ
Leave a comment