이번에 Toy 프로젝트로 go언어를 선택했고, 이를 가지고 restful 서버를 만들기로 했다.
찾으면서 나온 패키지들은 여러가지가 있는데, 가장 많이 사용하고, 내가 사용함에 있어 필요한 기능들을 제공해주는 프레임 워크를 선택하게 되었고 gin을 사용하기로 결정했다.
gin framework
https://github.com/gin-gonic/gin
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형식의 데이터가 출력될 것입니다.
'프로그래밍 > Go언어' 카테고리의 다른 글
Golang 변수 초기화와 정의된 데이터 타입, 함수 (0) | 2021.08.29 |
---|---|
Golang Array, Slice 사용법. (append) (1) | 2021.06.27 |
Golang interface에 대한 설명.... (0) | 2021.06.06 |
Golang의 fmt.Print는 heap으로 간다? (0) | 2021.05.23 |
Golang Closure(클로저)란? (인라인과 메모리 할당 설명) (0) | 2021.05.23 |
댓글