[Golang] Gin 시작하기

2022-04-11 hit count image

Golang의 웹 프레임워크중 가장 유명한 Gin 웹 프레임워크를 사용하여 Golang으로 웹 서버를 개발하는 방법에 대해 알아보도록 하겠습니다.

개요

이번 블로그 포스트에서는 Golang을 사용하여 웹 서버를 개발하는 방법에 대해서 알아보려고 합니다. Golang에는 많은 웹 프레임워크가 있습니다만, 그 중에서 가장 유명한 웹 프레임워크인 Gin 웹 프레임워크를 사용하는 방법에 대해서 알아봅시다.

이 블로그 포스트에서 소개하는 소스 코드는 아래의 링크에서 확인하실 수 있습니다.

블로그 시리즈

이 블로그 포스트는 Golang에서 Gin 웹 프레임워크를 사용하는 방법에 관해 시리즈로 제작되었습니다. Gin 웹 프레임워크의 다른 사용법을 알고 싶으시다면, 다음 링크를 참고하시기 바랍니다.

  • [Golang] Gin 시작하기

Go 프로젝트 생성

Gin 웹 프레임워크의 사용 방법을 확인하기 위해, 다음 명령어를 사용하여 Go 모듈을 통해 프로젝트를 준비합니다.

mkdir start
cd start
go mod init github.com/dev-yakuza/study-golang/gin/start

그럼 다음과 같이 ./go.mod 파일이 생성되는 것을 확인할 수 있습니다.

module github.com/dev-yakuza/study-golang/gin/start

go 1.17

Gin 웹 프레임워크 설치

Gin 웹 프레임워크를 사용하기 위해, 다음 명령어를 사용하여 Gin 웹 프레임워크를 설치합니다.

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

그럼 다음과 같이 ./go.mod 파일에 Gin 웹 프레임워크와 관련된 내용이 추가된 것을 확인할 수 있습니다.

module github.com/dev-yakuza/study-golang/gin/start

go 1.17

require (
  github.com/gin-contrib/sse v0.1.0 // indirect
  github.com/gin-gonic/gin v1.7.7 // indirect
  github.com/go-playground/locales v0.14.0 // indirect
  github.com/go-playground/universal-translator v0.18.0 // indirect
  github.com/go-playground/validator/v10 v10.10.1 // indirect
  github.com/golang/protobuf v1.5.2 // indirect
  github.com/json-iterator/go v1.1.12 // indirect
  github.com/leodido/go-urn v1.2.1 // indirect
  github.com/mattn/go-isatty v0.0.14 // indirect
  github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
  github.com/modern-go/reflect2 v1.0.2 // indirect
  github.com/ugorji/go/codec v1.2.7 // indirect
  golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 // indirect
  golang.org/x/sys v0.0.0-20220406163625-3f8b81556e12 // indirect
  golang.org/x/text v0.3.7 // indirect
  google.golang.org/protobuf v1.28.0 // indirect
  gopkg.in/yaml.v2 v2.4.0 // indirect
)

또한, ./go.sum 파일이 생성된 것을 확인할 수 있습니다.

Gin 웹 프레임워크 사용

그럼 Gin 웹 프레임워크를 사용하여 웹 서버를 기동해 보도록 하겠습니다. ./main.go 파일을 생성하고 다음과 같이 수정합니다.

package main

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

func setupRouter() *gin.Engine {
  r := gin.Default()
  r.GET("/ping", func(c *gin.Context) {
    c.String(200, "pong")
  })
  return r
}

func main() {
  r := setupRouter()
  r.Run(":8080")
}

코드를 조금 자세히 살펴봅시다.

func setupRouter() *gin.Engine {
  r := gin.Default()
  r.GET("/ping", func(c *gin.Context) {
    c.String(http.StatusOK, "pong")
  })
  return r
}

Gin 웹 프레임워크가 제공하는 gin.Default()를 사용하여 웹 서버를 생성하고 특정 URL(/ping)에 원하는 동작을 하는 함수를 정의할 수 있습니다. 이번 예제에서는 간단하게 pong이라는 문자를 StatusOK(200) 상태와 함께 반환하도록 하였습니다.

func main() {
  r := setupRouter()
  r.Run(":8080")
}

이렇게 특정 URL과 그에 필요한 동작을 정의한 후, 생성된 웹 서버를 run 함수를 통해 8080 포트로 실행하도록 하였습니다.

이제 다음 명령어를 사용하여 웹 서버를 실행해 봅니다.

go run ./main.go

그리고 웹 브라우저를 열고 http://localhost:8080/ping URL을 입력하면 다음과 같은 결과를 확인할 수 있습니다.

pong

완료

이것으로 Golang에서 많이 사용되는 Gin 웹 프레임워크를 사용하여 웹 서버를 실행 시키는 방법에 대해서 알아보았습니다. 앞으로는 이 Gin 웹 프레임워크를 사용하는 방법에 대한 블로그 포스트를 작성할 예정입니다.

제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!

앱 홍보

책 홍보

블로그를 운영하면서 좋은 기회가 생겨 책을 출판하게 되었습니다.

아래 링크를 통해 제가 쓴 책을 구매하실 수 있습니다.
많은 분들에게 도움이 되면 좋겠네요.

스무디 한 잔 마시며 끝내는 React Native, 비제이퍼블릭
스무디 한 잔 마시며 끝내는 리액트 + TDD, 비제이퍼블릭
[심통]현장에서 바로 써먹는 리액트 with 타입스크립트 : 리액트와 스토리북으로 배우는 컴포넌트 주도 개발, 심통
Posts