본문 바로가기
프로그래밍/Go언어

Go언어 Restful을 위한 패키지 gin 설명

by Hwan2 2021. 7. 4.
728x90
반응형

 

 

 

이번에 Toy 프로젝트로 go언어를 선택했고, 이를 가지고 restful 서버를 만들기로 했다.

 

찾으면서 나온 패키지들은 여러가지가 있는데, 가장 많이 사용하고, 내가 사용함에 있어 필요한 기능들을 제공해주는 프레임 워크를 선택하게 되었고 gin을 사용하기로 결정했다.

 

gin framework

https://github.com/gin-gonic/gin

 

gin-gonic/gin

Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance -- up to 40 times faster. If you need smashing performance, get yourself some Gin. - ...

github.com

 

 

1. gin framework 특징

gin 에서는 기본적으로 라우팅을 제공해준다.

여기서 라우팅이란 GET 요청으로 전달된 URL 경로들을 받아서 각 메소드에 맞게 전달해주는 역할로 생각해주면 된다.

 

gin에서는 golang 내장된 패키지에 있는 Router를 사용합니다.

https://pkg.go.dev/github.com/julienschmidt/httprouter#Router.RedirectTrailingSlash

 

해당 링크를 참조하시면 됩니다.

 

해당 라우팅 구조는 기수트리 알고리즘을 사용하여 굉장히 빠르게 처리가 가능하고, 잘못된 경로의 요청이 왔을 때, 내부적으로 해당 경로를 수정해서 찾게 됩니다. 또한 경로가 없을 땐 405 error를 뱉고, 아니면 Not found를 response 합니다.

 

그밖에 CROS 기능등 여러가지 기능을 제공해 줍니다.

 

2. gin example

※ git 공식 사이트의 readme.md 에 잘 나와있으니 참고하시기 바랍니다.

 

1. install

$ go get -u github.com/gin-gonic/gin

 

2. example

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 (for windows "localhost:8080")
}

3. run

$ go run example.go

 

실행이 완료 되었다면, 인터넷 주소창에 "localost:8080/ping" 을 입력해보면 {"message" : "pong"} 이라는 json형식의 데이터가 출력될 것입니다.

 

 

 

 

 

반응형

댓글


스킨편집 -> html 편집에서