본문 바로가기

go3

Go gRPC 서버에 REST API 요청 주고 받기 [grpc-gateway] rpdly 프로젝트 를 진행하면서 단축 URL를 생성하는 부분을 Go와 grpc, redis를 이용해 구현하고 있다. (프로젝트 명은 rpdly-go-uri 라고 정함) 회원가입 등의 이외 비즈니스 로직들은 Java와 Spring boot를 사용하고 있는데 (rpdly-api), 이 곳에서 rpdly-go-uri 서비스와 연결할때 grpc를 이외에도 REST로 http 요청을 하면 어떨지 떠올랐다. 이 과정에서 grpc-gateway 플러그인과 twirp 프레임워크를 알게 되었다. 언뜻 보기엔 내가 원하는 기능을 둘다 지원해주는 것 같지만, 이 둘의 차이는 아래처럼 나눠볼 수 있겠다. grpc-gateway protobuf를 REST HTTP API를 gRPC로 변환시켜주는 리버스 프록시 서버를 생성 H.. 2020. 12. 31.
Go Module을 사용하여 GOROOT 이외의 디렉토리에서 모듈 불러오기 Go를 이용해 gRPC를 익히면서 Module import에 대한 문제가 생겼다. 프로젝트 내부에 모듈을 두고 싶었으나, import를 하면 Go 컴파일러는 GOROOT 디렉토리에서만 패키지를 찾는 것이었다. 문제를 해결하기 위해 코드와 폴더 구조를 살펴보자 golang_module (나의 프로젝트 폴더) ├── main.go └── my_module └── animal.go // my_module/animal.go package animals import "fmt" // PrintDogSound for used by main package func PrintDogSound() { fmt.Println("bark") } // PrintCatSound for used by main package func .. 2020. 9. 13.
Go의 iota 사용에 대해서 Go의 iota에 대해 다루는 글입니다 Go에서는 enum을 위해 constant로 정의하여 사용한다. 이때, iota라는 것을 사용할 수 있다. iota는 0, 1, 2 양수의 형태로 상수를 제공하는 enumerator이다 const구문에서 첫번째 iota는 0으로 리셋되는 특성을 가지고 있으며, 그 다음 상수에선 1씩 증가하게 된다. 간단한 예시를 들어보자 const ( SUN = 0 MON = 1 TUE = 2 WED = 3 // ...continue... ) 요일을 상수로 나타낼때 위와 같이 상수를 선언을 하게 된다 그러나, iota를 사용하여 위 상수를 더 간략하게 나타낼 수 있다 const ( SUN = iota MON TUE WED // ...continue... ) fmt.Println(S.. 2020. 9. 5.
반응형