[Go] Go언어로 Rest api 구현
관련 글
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같은 경우 더 효울적으로 처리하여 스케일러블하게 코드를 작성할 수 있는 방법을 모색해야 할 거 같다.