#02. Go - gqlgen 프로젝트 설정하기

2020. 6. 1. 00:15Tutorial & Training/Go

728x90

https://gmyankee.tistory.com/301

 

#01.Go - GraphQL 알아보기

서론 Go언어를 사용하는 Gopher 여러분들은 상당히 다수 존재하는 반면에, Graphql은 아직까지도 한국어로 된 자료가 많지 않으며, GraphQL 대다수의 자료는 JS가 부동의 1위를... 저도 언어를 3가지를 ��

gmyankee.tistory.com

이전에 알아본 graphql중에서도 gqlgen을 강조하였기에 당연히 gqlgen을 사용할 것이며,

사실 제가 gqlgen말고 다른건 안써봤습니다!

 

 

 

gqlgen 공식 Github

 

99designs/gqlgen

go generate based graphql server library. Contribute to 99designs/gqlgen development by creating an account on GitHub.

github.com

 

gqlgen 공식문서

 

gqlgen

What is gqlgen? gqlgen is a Go library for building GraphQL servers without any fuss. gqlgen is: Schema first — Define your API using the GraphQL Schema Definition Language. Type safe — You should never see map[string]interface{} here. Codegen — Let

gqlgen.com

 

 

gqlgen 설정하기

// 저는 overmap 이라는 이름의 저장소로 진행하겠습니다.
// go mod init github.com/[계정명]/[저장소]
go mod init github.com/yankeetube/overmap
go get github.com/99designs/gqlgen
go run github.com/99designs/gqlgen init

// Windows
@DOSKEY gqlgen="go run github.com/99designs/gqlgen"

튜토리얼에 있는 대로 따라하셔도 되지만 그렇게 할 경우 TODO를 진행하게 됩니다.

그래도 Todo가 생깁니다 ㅋ__ㅋ

 

 

 

│  go.mod
│  go.sum
│  gqlgen.yml
│  server.go
│
│
└─graph
    │  resolver.go
    │  schema.graphqls
    │  schema.resolvers.go
    │
    ├─generated
    │      generated.go
    │
    └─model
            models_gen.go

init 명령으로 생성하게 되면 위 와 같은 폴더 구조를 가지게 됩니다.

model 폴더의 models_gen은 스키마를 추가/수정 할 경우 init 명령으로 자동생성 해주는데,

 

GORM을 사용할 경우 https://gmyankee.tistory.com/299

 

GORM 컬럼명 지정하기

개발자마다 또는 사용자마다 사용하는 코드 스타일 및 컨벤션은 제각각 다릅니다. 하지만 언어마다 권장하는 표준 방식이 존재하는데 이를테면 Python에서는 snake_case를 // snake_case(스네이크 케이�

gmyankee.tistory.com

이러한 단점이 존재하기 때문에, 수동으로 수정해야하는 부득이한 경우가 생깁니다.

하지만 init을 할 때마다 사라지니... 이걸 해결하려면

 

 

1. 애초부터 DB 컬럼명에대한 고민을 잘 하자! (언더바는 대문자 카멜케이스로 치환되니까... 이건 이렇게...)

2. History를 잘 지원해주는 IDE를 사용하자! (goland는 Jetbrains 제품은 모두 기본적인 history 기능이 빵빵합니다.)

3. Git으로 관리하자...

4. gqlgen.yml을 이용하여 관리하기 (이부분은 저도 따로 진행해보지 않아 공식문서를 참고해보셔야 할 것 같습니다.)

 

 

 

728x90