Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

dev.log

Gin의 Watch 기능을 이용한 개발 본문

golang

Gin의 Watch 기능을 이용한 개발

sh0seo 2017. 9. 28. 20:07

go는 싱글 바이너리를 지향합니다. 그래서 일반적으로 func main()에서부터 개발을 시작합니다. 이 main에 필요한 기능을 붙여서 micro하게 만들어 나갑니다.


개발 단계는 명확합니다.

  1. vim를 이용하여 코딩
  2. 파일 저장
  3. 콘솔에서 실행

이런 단계에서 반복적으로 콘솔화면에서


$ go run main.go


를 실행하는 상당히 불편합니다. 대신 파일이나 디렉토리의 변화를 감지하여 자동으로 실행시켜주는 tool이 있습니다.


보통 watch 기능이라고 부릅니다. dot net core의 경우에는 실행할 때 watch 옵션을 주면, panic 같은 상태만 아니라면 프로젝트의 어떤 파일을 수정, 저장해도 자동으로 반영됩니다.


go에서는 gin(Web Framework의 gin이 아닙니다)이라는 바이너리가 있습니다. 다음의 github url에서 다운로드합니다.


$ go get github.com/codegangsta/gin

기본 실행

$ gin run main.go

Help

$ gin -h


--laddr value, -l value listening address for the proxy server

--port value, -p value port for the proxy server (default: 3000)

--appPort value, -a value port for the Go web server (default: 3001)

--bin value, -b value name of generated binary file (default: "gin-bin")

--path value, -t value Path to watch files from (default: ".")

--build value, -d value Path to build files from (defaults to same value as --path)

--excludeDir value, -x value Relative directories to exclude

--immediate, -i run the server immediately after it's built

--all reloads whenever any file changes, as opposed to reloading only on .go file change

--godep, -g use godep when building

--buildArgs value Additional go build arguments

--certFile value TLS Certificate

--keyFile value TLS Certificate Key

--logPrefix value Setup custom log prefix

--help, -h show help

--version, -v print the version


gin은 무엇보다 웹 서비스를 위한 watch tool이기 때문에 port proxy, tls 인증서 등을 지원합니다.


연습

Gin Web Framework를 이용하여 간단한 REST Server를 구성한다.


package main


import "fmt"

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


func main() {

  r := gin.Default()

  r.GET("/", func(c *gin.Context) {

    c.JSON(200, gin.H{

      "message": "OK",

    }

  })

  r.Run()

}


파일 저장하고 다른 콘솔창에서 gin을 이용하여 main.go를 실행한다.


$ gin run main.go


결론

goglang과 같은 ide를 사용한다면 ide가 제공하는 빌드, 실행 방법을 이용하는 것이 편하다. 하지만 vim와 같은 에디터툴로만 개발중이라면 gin 같은 watch 툴을 이용하여 조금 덜 수고스럽게 일하자.



'golang' 카테고리의 다른 글

Go를 지원하는 nginx unit  (0) 2017.09.28
2017.09.17 GDG Seoul Meetup 자료  (0) 2017.09.28
Go 라이브러리 검색하는 방법  (0) 2017.09.28
Go의 의존성 관리도구 dep  (0) 2017.09.07
Go 1.9 Release  (0) 2017.09.07