gin-gonic으로 RESTful API 개발하기 (1)

Melon Coder·2024년 7월 9일

Go

목록 보기
12/14

Go 와 Gin 웹 프레임워크를 사용하여 RESTFul 웹 API를 개발한다.

RESTful API

  • 웹 서비스에서 자원을 요청하거나 핸들링할 때 적용되는 규칙이다.
  • 위의 자원이란 보통 HTML 문서(웹 페이지)나 JSON 문서(단순 정보 조회)
  • 대부분의 RESTful API는 HTTP를 사용한다.

Gin Framework

  • 고성능 RESTful API 개발에 많이 사용되는 Go 기반의 오픈 소스 프레임워크이다.

파이썬과 flask와의 관계라고 생각하면 된다.


이정도까지 알고 원래의 목적인 RESTful API를 만들어보자.

GET

  1. 첫번째로 통신 테스트를 위한 데이터를 만들자.
    구조체를 정의할 때는 필드명 앞 글자를 대문자로 하느냐 소문자로 하느냐에 의해 패키지 외부에서 접근 여부를 정의할 수 있다. (대문자로 해야 외부에서 사용 가능)

하지만 json 형식은 필드명을 대문자로 하지 않기 때문에 필드 타입 옆에 json 필드명을 정의해준다.

type player struct {
	Name		string		`json: "name"`
	Age			int  		`json: "age"`
	Position	string		`json: "position"`
	Country		string		`json: "country"`
}
  1. 사용할 데이터가 들어 있는 구조체 슬라이스를 정의해준다.
var players = []player {
	{name: "Leo Messi", age: 32, position: "Forward", country: "Argentina"},
    {name: "Ronaldo", age: 32, position: "Forward", country: "Portugal"},
    {name: "Morata", age: 33, position: "Forward", country: "Spain"},
}
  1. 이제 클라이언트에서 GET 요청을 하면 모든 선수의 정보를 JSON으로 반환하는 핸들러를 만들어보자.
func getPlayers(c *gin.Context){
	c.IndentedJSON(http.StatusOK, players)
}
  1. 그리고 라우팅 설정을 해준다.
    엔드포인트 경로에 위에서 만든 핸들러 함수를 할당해준다.
	r := gin.Default()
	r.GET("/players", getPlayers)

	r.Run("localhost:8080")

*gin.Default() 는 gin.New()와 다르게 로깅과 복구 기능을 활성화하여 제공한다.
즉 Logging middleware 와 Recovery middleware 를 제공하는데 gin.New() 인스턴스를 생성하여 개발하려면 수동으로 위 미들웨어 기능을 추가해야 한다.

r.Use(gin.Logger())
r.Use(gin.Recovery())
  1. 지금까지의 과정을 잘 거치고 http://localhost:8080/players 로 접근을 하면 우리가 만든 데이터를 확인할 수 있다.
[
    {
        "Name": "Leo Messi",
        "Age": 32,
        "Position": "Forward",
        "Country": "Argentina"
    },
    {
        "Name": "Ronaldo",
        "Age": 32,
        "Position": "Forward",
        "Country": "Portugal"
    },
    {
        "Name": "Morata",
        "Age": 33,
        "Position": "Forward",
        "Country": "Spain"
    }
]
profile
create new things

0개의 댓글