AWS 실습용 백엔드 API용 리포지토리다.
echo 프레임워크를 이용한 Go 언어 API 서버다. Go 언어에는 다양한 프레임워크가 있다. REST API 서버를 구현하기 위해 충분한 기능을 가졌으며 관련 정보도 많은 echo 를 이용한다.
API 서버와 DB(MySQL)의 접속은 Go의 ORM 중 하나인 GORM1을 이용한다.
백엔드 애플리케이션은 다음 2가지 서비스를 제공한다.
각 API 엔드포인트의 집속 접두사는 /v1
이다.
- Item서비스
- DB 접속 없이 화면 표시를 하기 위해 Helloworld를 반환한다(/helloworld)
- Item테이블에 등록된 데이터를 반환한다(/Item)
- 프론트엔드에서 입력된 정보를 이용해 Item을 등록한다(/Item)
- Item에 찜 마크를 붙이거나 제거한다(/Item/favorite)
- Notifiation서비스
- Notification테이블에 등록된 데이터를 반환한다(/Notifications)
- 질의 매개변수로 id를 이용해 특정 데이터만 반환한다
- 알림 뱃지를 표시하기 위해 읽기 않은 알림 수를 반환한다(/Notifiactions/Count)
- 읽지 않은 알림을 일괄 읽음으로 변경한다(/Notifications/Read)
- Notification테이블에 등록된 데이터를 반환한다(/Notifications)
이 책의 내용에 따라 이용해주세요.
- Go 버전은 16.x를 이용한다
- GOPATH에 따라 적절한 디렉토리에 이 리포지토리를 복사한다
- 다음 명령어를 이용해 모듈을 다운로드 한다
$ go get golang.org/x/lint/golint
$ go install
$ go mod download
- 이 백엔드는 DB와의 접속이 필요하다. DB 접속을 위해 다음 환경 변수를 지정한다
- DB_HOST
- DB_USERNAME
- DB_PASSWORD
- DB_NAME
로컬에 MySQL 서버를 설치한다
https://dev.mysql.com/downloads/mysql/
❯ make all
❯ docker build -t sbcntr-backend:latest .
❯ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
sbcntr-backend latest cdb20b70f267 58 minutes ago 4.45MB
:
❯ docker run -d -p 80:80 sbcntr-backend:latest
❯ curl http://localhost:80/v1/helloworld
{"data":"Hello world"}
❯ curl http://localhost:80/healthcheck
null
- 로컬 환경은 macOS Bigsur 11.6 및 Monterey 12.1 에서만 테스트됐음