go-gin으로 사쿠와 RESTAPI 구축

gin이란?



gin은 Go 언어의 프레임워크 안에서 주요하고 역사적인 프레임워크로, 가볍고 단순한 인터페이스가 특징입니다.

이번에는 그런 gin을 사용하여 간단한 RESTAPI를 구축하겠습니다.

gin 소개



go get에서.
 go get -u github.com/gin-gonic/gin

공식 github 샘플을 이동해 봅시다.
package main

import "github.com/gin-gonic/gin"

func main() {
    r := gin.Default()
    r.GET("/ping", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "pong",
        })
    })
    r.Run() // listen and serve on 0.0.0.0:8080
}
go run main.go

http://localhost:8080/ping로 이동하십시오.
message":"pong"가 표시됩니다.
r := gin.Default()

여기 처리에서 기본 미들웨어로 새로운 라우터를 만들고 있습니다.

RESTAPI 구축



그럼 새롭고, RESTAPI를 구축해 갑니다.
샘플로 만드는 것은 타이틀과 디스크립션만 가진 Article을 POST, GET 할 수 있는 기능이 됩니다.

또한 디렉토리 구조는 다음과 같습니다.
src
┣article 
┃   ┗article.go
┃
┗httpd
 ┣handler
 ┃ ┗articleFunc.go   
 ┗main.go


먼저 Article을 정의합니다.
쓰여진 대로군요.

article.go
package article

type Item struct {
    Title       string `json:"title"`
    Description string `json:"description"`
}

type Articles struct {
    Items []Item
}

func New() *Articles {
    return &Articles{}
}

func (r *Articles) Add(item Item) {
    r.Items = append(r.Items, item)
}

func (r *Articles) GetAll() []Item {
    return r.Items
}


이어서 위 파일에서 정의한 Article의 function을 정리한 파일입니다.
이쪽도 그대로의 처리군요.

articleFunc.go

package handler

import (
    "net/http"

    "restAPI/article"

    "github.com/gin-gonic/gin"
)

func ArticlesGet(articles *article.Articles) gin.HandlerFunc {
    return func(c *gin.Context) {
        result := articles.GetAll()
        c.JSON(http.StatusOK, result)
    }
}

type ArticlePostRequest struct {
    Title       string `json:"title"`
    Description string `json:"description"`
}

func ArticlePost(post *article.Articles) gin.HandlerFunc {
    return func(c *gin.Context) {
        requestBody := ArticlePostRequest{}
        c.Bind(&requestBody)

        item := article.Item{
            Title:       requestBody.Title,
            Description: requestBody.Description,
        }
        post.Add(item)

        c.Status(http.StatusNoContent)
    }
}

마지막은 메인이 되는 main.go입니다.

main.go
package main

import (
    "restAPI/httpd/handler"

    "restAPI/article"

    "github.com/gin-gonic/gin"
)

func main() {
    article := article.New()
    r := gin.Default()
    r.GET("/article", handler.ArticlesGet(article))
    r.POST("/article", handler.ArticlePost(article))

    r.Run() // listen and serve on 0.0.0.0:8080

}

여기까지 구축을 하면 아래에서 기동해 보세요
go run httpd/main.go

http://localhost:8080/article
에 대한 POST와 GET을 사용할 수 있어야합니다.

시험에 Postman을 사용해 봅니다.

POST (Headers에 Content-Type : application/json 설정)


GET


이상이 됩니다.

참고 자료



htps : // 기주 b. 코 m / 긴 - 고니 c / 긴
h tps : // 긴-고에 c. 코 m / 그럼 / 두 cs /

좋은 웹페이지 즐겨찾기