[Go] Go언어로 Rest api 구현

Posted on Sep 26, 2022

관련 글

Rest api 조건을 만족하는 http api 구현

책 관련 정보를 저장, 조회, 삭제 그리고 수정을 하는 api를 만드려고 한다. 이 때 저장, 삭제 그리고 수정을 위해서는 어드민 계정이 필요하다고 가정하고 진행한다.

구현할 api 목록 위에서 로그인까지는 인증 요구x

방식주소설명
GET/v1/book모든 책들 id, 제목 조회
GET/v1/book/:id한 개 책 정보 조회
POST/v1/auth/sign-up어드민 생성
POST/v1/auth/sign-in로그인
POST/v1/book책 추가하기
PATCH/v1/book책 내용 수정하기
DELETE/v1/book책 삭제하기
DELETE/v1/auth/sign-out로그아웃
POST/v1/auth/refresh토큰 새로고침

Go(Gin) + Postgresql(데이터 저장) + Redis(jwt 저장)로 구성해보았다.

전체코드 클론 후 sudo docker-compose up -d –build로 실행하여 사용가능

아직 Go와 Gin에 대해 이해가 부족한 건지 코드 양이 쓸데없이 많은 거 같다. 더 공부해서 효율적인 방법으로 수정해봐야겠다.

HATEOAS를 만족하기 위해 응답에 링크들을 달아봤는데 생각보다 유용하다. Postman으로 테스트할 때 바로 링크 클릭해서 더 자세한 정보를 요청하기 쉬웠다.

책들 목록 조회할 때 응답을 캐시가능하게 할지 생각하다가 안 해도 상관없을 거 같아서 내버려두었다.

Restful한 api가 되기 위한 조건을 다 만족하는 api를 구현해보았다. 대부분의 조건은 익숙하거나 단순해서 구현하는 데에 어려움은 없었지만, HATEOAS같은 경우 더 효울적으로 처리하여 스케일러블하게 코드를 작성할 수 있는 방법을 모색해야 할 거 같다.