https://github.com/lee-lou2/go-openapi
[Golang] Open API
https://github.com/lee-lou2/go-openapi
Last synced: 2 months ago
JSON representation
[Golang] Open API
- Host: GitHub
- URL: https://github.com/lee-lou2/go-openapi
- Owner: lee-lou2
- Created: 2024-06-02T02:22:51.000Z (about 1 year ago)
- Default Branch: develop
- Last Pushed: 2024-06-21T06:27:14.000Z (12 months ago)
- Last Synced: 2025-02-15T05:15:21.078Z (4 months ago)
- Language: Go
- Size: 174 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Golang Open API π
## νλ‘μ νΈ μκ°
Golang μ체 net/http λ₯Ό μ΄μ©νμ¬ Open API λ₯Ό κ°λ°νλ κ°μΈ νλ‘μ νΈ## λμ λ° μ체 κ³Όμ
- νλ μμν¬λ₯Ό μ¬μ©νμ§ μκ³ net/http λ₯Ό μ΄μ©ν΄ REST API ꡬν
- λ―Έλ€μ¨μ΄ λ° μΈμ¦, κΆν λ±μ μ체 ꡬν
- κ° κΈ°λ₯λ³ ν μ€νΈ μ§ν(ν μ€νΈ μ½λ μΆκ° μμ± νμ)## μλΉμ€ λ° κ΅¬μ±
- **μ¬μ©μ**: μ¬μ©μ μμ± λ° κ΄λ ¨ κΈ°λ₯
- **μΈμ¦**: OAuth2.0 κΈ°λ°μΌλ‘ κ°λ°μ λ±λ‘(Bearer JWT), API(Client Credentials) ꡬν
- **κΆν λ° μ ν**: scopes, user level μ ν΅ν κΆν λΆμ¬ λ° λΆλΉ Call Count κ΄λ¦¬(λ±κΈμ μ΄μ)
- **μ¬μ©μ νμ΄μ§**: νμ κ°μ , λ‘κ·ΈμΈ, ν¨μ€μλ μ¬μ€μ λ° ν΄λΌμ΄μΈνΈ κ΄λ¦¬
- **보μ**: κ°μΈ μ 보(email) μνΈν, 보μ μν μμ μ°¨λ¨
- **λ―Έλ€μ¨μ΄**: static, cors, recover, request_id λ±
- **κΈ°ν**: AWS νλΌλ―Έν° μ€ν μ΄λ₯Ό μ΄μ©ν νκ²½ λ³μ κ΄λ¦¬## κΈ°μ μ€ν
- **μΈμ΄**: Golang
- **μΈμ¦**: Bearer(JWT), OAuth2.0(Client Credentials)
- **λ°μ΄ν°λ² μ΄μ€**: Sqlite3(Local), Postgresql(DEV, QA, Prod)## ν μ€νΈ
- httptest λ₯Ό μ΄μ©ν νΈλ€λ¬ κ²μ¦(test ν¨ν€μ§)
- κ° κΈ°λ₯λ³ μ λν μ€νΈ## ν΄λ ꡬ쑰
```
/go-openapi
βββ api
β βββ handler
β β βββ auth
β β β βββ client.go
β β β βββ login.go
β β β βββ token.go
β β βββ client
β β β βββ me.go
β β βββ user
β β βββ password.go
β β βββ user.go
β β βββ verify.go
β βββ middleware
β β βββ auth.go
β β βββ chain.go
β β βββ cors.go
β β βββ limit.go
β β βββ logger.go
β β βββ permission.go
β β βββ recover.go
β β βββ request_id.go
β βββ parser
β β βββ json.go
β βββ render
β β βββ json.go
β βββ router
β β βββ base.go
β β βββ template.go
β β βββ v1.go
β βββ validation
β βββ oauth2.go
β βββ user.go
β βββ verify.go
βββ cmd
β βββ api
β βββ server.go
βββ configs
β βββ cache.go
β βββ db.go
β βββ env.go
β βββ test.go
βββ internal
β βββ auth
β β βββ client.go
β β βββ login.go
β β βββ token.go
β βββ user
β βββ password.go
β βββ user.go
β βββ verify.go
βββ model
β βββ client
β β βββ client.go
β β βββ const.go
β β βββ enum.go
β βββ user
β βββ user.go
βββ pkg
β βββ auth
β β βββ client.go
β β βββ token_test.go
β β βββ token.go
β βββ notify
β β βββ email.go
β βββ user
β β βββ verify.go
β βββ utils
β βββ base64_test.go
β βββ base64.go
β βββ encrypt_test.go
β βββ encrypt.go
β βββ hash_test.go
β βββ hash.go
β βββ password_test.go
β βββ password.go
β βββ string_test.go
β βββ string.go
βββ test
β βββ .env
β βββ handler_auth_test.go
β βββ handler_user_test.go
β βββ server_test.go
βββ views
β βββ accounts
β β βββ login
β β β βββ index.html
β β βββ password
β β β βββ index.html
β β βββ signup
β β βββ index.html
β βββ user
β β βββ password
β β β βββ index.html
β β βββ verify
β β βββ index.html
β βββ error
β β βββ index.html
β βββ index.html
βββ .env
βββ .gitignore
βββ go.mod
βββ go.sum
βββ deploy.sh
βββ Dockerfile
βββ main.go
βββ README.md
```## μ€ν λ°©λ²
### μ¬μ μ€λΉ
- Go μ€μΉ (>= 1.22)
- Docker μ€μΉ
- νκ²½ λ³μ μ€μ (AWS νλΌλ―Έν° μ€ν μ΄ μ¬μ©)### μ€ν λ¨κ³
1. μ μ₯μ ν΄λ‘
```sh
git clone https://github.com/lee-lou2/go-openapi
cd go-openapi
```2. μ’ μμ± μ€μΉ
```sh
go mod tidy
```3. κ°λ° μλ² μ€ν
```sh
go run .
```### νκ²½ λ³μ
- λ‘컬 μ€ν μ `.env` νμΌ νμ
```sh
SERVER_ENV=
# νλΌλ―Έν° μ€ν μ΄ μ¬μ©μ
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_REGION=ap-northeast-2
# νλΌλ―Έν° μ€ν μ΄ μ¬μ©νμ§ μμμ
SERVER_HOST=
SERVER_PORT=
EMAIL_SMTP_HOST=
EMAIL_SMTP_PORT=
EMAIL_USERNAME=
EMAIL_PASSWORD=
JWT_SECRET=
COOKIE_ENCRYPT_KEY=
SHA256_SALT=
DB_HOST=
DB_PORT=
DB_USER=
DB_PASSWORD=
DB_NAME=
AES256_KEY=
```