Skip to content

HongJungWan/http-handler-modules

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

7 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

http-handler-modules

ν”„λ‘œμ νŠΈ λͺ©ν‘œ

  • context νŒ¨ν‚€μ§€λ‚˜ database/sql νŒ¨ν‚€μ§€ λ“±μ˜ ν•„μˆ˜ νŒ¨ν‚€μ§€ μ‚¬μš©λ²•

  • testing νŒ¨ν‚€μ§€ μ™Έμ˜ ν‘œμ€€ νŒ¨ν‚€μ§€λ₯Ό μ‚¬μš©ν•œ ν…ŒμŠ€νŠΈ 기법

  • 업계 ν‘œμ€€μ΄ 된 μ™ΈλΆ€ μ˜€ν”ˆμ†ŒμŠ€

  • λˆ„κ΅¬λ‚˜ ν•œ λ²ˆμ―€μ€ μ½”λ“œ λ¦¬λ·°μ—μ„œ μ§€μ λ‹Ήν•œ 적이 μžˆλŠ” μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ΅¬ν˜„ν•  λ•Œ λ°œμƒν•  수 μžˆλŠ” μ‹€μˆ˜/μ‹€νŒ¨


μœ„μ™€ 같은 λ‚΄μš©μ„ ν•™μŠ΅ν•œλ‹€.



μ‹€μŠ΅ λ‚΄μš©

Title Details
HTTP μ„œλ²„ λ§Œλ“€κΈ° λ¦¬νŒ©ν„°λ§ ν…ŒμŠ€νŠΈ μ½”λ“œ
- 쉽지 μ•Šμ€ ν…ŒμŠ€νŠΈ
- run ν•¨μˆ˜λ₯Ό 처리 λΆ„λ¦¬ν•˜κΈ°
- ν…ŒμŠ€νŠΈκ°€ μ‹€ν–‰λ˜μ§€ μ•ŠλŠ” 경우

포트 번호λ₯Ό λ³€κ²½ν•  수 μžˆλ„λ‘ λ§Œλ“€κΈ°
- λ™μ μœΌλ‘œ 포트 번호 μ„€μ •ν•˜κΈ°
HTTP μ„œλ²„λ₯Ό μ•½ν•œ κ²°ν•© ꡬ쑰둜 λ³€κ²½ν•˜κΈ° ν™˜κ²½ λ³€μˆ˜λ‘œλΆ€ν„° μ„€μ • 뢈러였기
- Config νŒ¨ν‚€μ§€ κ΅¬ν˜„ν•˜κΈ°
- ν™˜κ²½ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•΄μ„œ μ‹€ν–‰ν•˜κΈ°

μ‹œκ·Έλ„ μ²˜λ¦¬ν•˜κΈ°
- signal.NotifyContextλ₯Ό μ‚¬μš©ν•΄ μ‹œκ·Έλ„ 기닀리기

Server ꡬ쑰체 μ •μ˜ν•˜κΈ°

λΌμš°νŒ… μ •μ˜λ₯Ό λΆ„ν• ν•œ NewMux μ •μ˜ν•˜κΈ°
- httptest νŒ¨ν‚€μ§€λ₯Ό μ‚¬μš©ν•œ ν…ŒμŠ€νŠΈ

run ν•¨μˆ˜λ₯Ό λ‹€μ‹œ λ¦¬νŒ©ν„°λ§ν•˜κΈ°
μ—”λ“œν¬μΈνŠΈ μΆ”κ°€ν•˜κΈ° entity.Task νƒ€μž… μ •μ˜μ™€ 영ꡬ μ €μž₯ λ°©λ²•μ˜ μž„μ‹œ κ΅¬ν˜„
- entity.Task의 영ꡬ μ €μž₯ 방법 μž„μ‹œ κ΅¬ν˜„

헬퍼 ν•¨μˆ˜λ₯Ό κ΅¬ν˜„ν•˜κΈ°
- ν…ŒμŠ€νŠΈμš© 헬퍼 ν•¨μˆ˜ κ΅¬ν˜„ν•˜κΈ°

νƒœμŠ€ν¬λ₯Ό λ“±λ‘ν•˜λŠ” μ—”λ“œν¬μΈνŠΈ κ΅¬ν˜„
- μš”μ²­ λ°”λ”” 검증

ν…Œμ΄λΈ” 주도 ν…ŒμŠ€νŠΈμ™€ 골든 ν…ŒμŠ€νŠΈλ₯Ό μ‘°ν•©ν•œ ν…ŒμŠ€νŠΈ μ½”λ“œ

νƒœμŠ€ν¬ λͺ©λ‘μ„ λ°˜ν™˜ν•˜λŠ” μ—”λ“œν¬μΈνŠΈ κ΅¬ν˜„

HTTP ν•Έλ“€λŸ¬λ₯Ό λΌμš°νŒ…μœΌλ‘œ μ„€μ •ν•˜κΈ°
- github.com/go-chi/chiλ₯Ό μ‚¬μš©ν•œ μœ μ—°ν•œ λΌμš°νŒ… μ„€μ •
RDBMSλ₯Ό μ‚¬μš©ν•œ λ°μ΄ν„°λ² μ΄μŠ€ 처리 κ΅¬ν˜„ν•˜κΈ° ν…Œμ΄λΈ” μ •μ˜μ™€ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ 방법 검증
- λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ 도ꡬ
- κΉƒν—ˆλΈŒ μ•‘μ…˜μ—μ„œ MySQL μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰ν•˜κΈ°

RDBMS 처리 κ΅¬ν˜„
- database/sqlκ³Ό github.com/jmoiron/sqlx νŒ¨ν‚€μ§€ μ‚¬μš©
- ν™˜κ²½ λ³€μˆ˜μ—μ„œ 정보 읽기
- μΈν„°νŽ˜μ΄μŠ€μ™€ Repository νƒ€μž… μ •μ˜
- RDBMS κ΄€λ ¨ 접근을 μœ„ν•œ ν…ŒμŠ€νŠΈ ν…œν”Œλ¦Ώ ν•¨μˆ˜

RDBMS κ΄€λ ¨ 접근을 μœ„ν•œ ν…ŒμŠ€νŠΈ μ½”λ“œ
- μ‹€ν–‰ ν™˜κ²½μ— 따라 접속 정보λ₯Ό λ³€κ²½ν•˜λŠ” ν…ŒμŠ€νŠΈ ν…œν”Œλ¦Ώ ν•¨μˆ˜
- μ‹€μ œ RDBMSλ₯Ό μ‚¬μš©ν•œ ν…ŒμŠ€νŠΈν•˜κΈ°
- λͺ©μ„ μ‚¬μš©ν•œ ν…ŒμŠ€νŠΈν•˜κΈ°
κΈ°λŠ₯λ³„λ‘œ HTTP ν•Έλ“€λŸ¬ κ΅¬ν˜„ λΆ„ν• ν•˜κΈ° HTTP ν•Έλ“€λŸ¬ κΈ°λŠ₯ λΆ„ν• 

go generate λͺ…령을 μ‚¬μš©ν•œ λͺ© μžλ™ 생성
- github.com/matryer/moq νŒ¨ν‚€μ§€

λͺ© μ½”λ“œ μžλ™ 생성
- handler.AddTaskServiceλ₯Ό μ‚¬μš©ν•œ handler.AddTask λ¦¬νŒ©ν„°λ§

μ‚¬μš©μž 등둝 κΈ°λŠ₯ μž‘μ„±
- entity νŒ¨ν‚€μ§€ κ΅¬ν˜„
- handler νŒ¨ν‚€μ§€ κ΅¬ν˜„
- service νŒ¨ν‚€μ§€ κ΅¬ν˜„
- store νŒ¨ν‚€μ§€ κ΅¬ν˜„
- NewMux ν•¨μˆ˜μ— 둜그인 μ—”λ“œν¬μΈνŠΈ μ •μ˜ν•˜κΈ°
λ ˆλ””μŠ€μ™€ JWTλ₯Ό μ‚¬μš©ν•œ 인증 및 κΆŒν•œ λ ˆλ””μŠ€ μ€€λΉ„
- λ ˆλ””μŠ€λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ½”λ“œ μ€€λΉ„
- KVS νƒ€μž…μ„ μœ„ν•œ ν…ŒμŠ€νŠΈ μž‘μ„±
JWT의 μ„œλͺ… μ€€λΉ„
- openssl λͺ…λ Ή μ€€λΉ„
- 비밀킀와 κ³΅κ°œν‚€ 생성

JWTλ₯Ό μ‚¬μš©ν•œ μ•‘μ„ΈμŠ€ 토큰 μž‘μ„±
- JWTer ꡬ쑰체 μ„ μ–Έ
- go:embedλ₯Ό μ‚¬μš©ν•œ 파일 μ²¨λΆ€ν•˜κΈ°
- JWTλ₯Ό λ°œν–‰ν•˜λŠ” GenerationToken λ©”μ„œλ“œ κ΅¬ν˜„
- HTTP μš”μ²­μ—μ„œ JWT λ°›κΈ°
- JWT 정보λ₯Ό context.Context νƒ€μž…κ°’μ— λ„£κΈ°

μ‚¬μš©μž 둜그인 μ—”λ“œν¬μΈνŠΈ κ΅¬ν˜„
- handler νŒ¨ν‚€μ§€ κ΅¬ν˜„
- service νŒ¨ν‚€μ§€ κ΅¬ν˜„
- store νŒ¨ν‚€μ§€ κ΅¬ν˜„
- NewMux ν•¨μˆ˜μ— 둜그인 μ—”λ“œν¬μΈνŠΈ μ •μ˜ν•˜κΈ°

미듀웨어 νŒ¨ν„΄μ„ μ‚¬μš©ν•œ 인증 κΈ°λŠ₯
- http.Request의 context.Context νƒ€μž…κ°’μ— μ‚¬μš©μž ID와 κ΄€λ ¨λœ 정보 λ„£κΈ°
- μš”μ²­ 전솑 μ‚¬μš©μž admin κΆŒν•œμΈμ§€ κ²€μ¦ν•˜κΈ°

μš”μ²­μ— ν¬ν•¨λœ 인증과 κ΄€λ ¨λœ 정보λ₯Ό μ‚¬μš©ν•œ μ—”λ“œν¬μΈνŠΈ 보호
- ν…Œμ΄λΈ” μ •μ˜ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ μž‘μ„±
- entity.Task ꡬ쑰체 μ„ μ–Έ
- 둜그인 μ‚¬μš©μžλ§Œ νƒœμŠ€ν¬ μΆ”κ°€ν•˜κΈ°
- POST /tasks둜 μžμ‹ μ΄ λ“±λ‘ν•œ νƒœμŠ€ν¬λ§Œ μΆ”κ°€
- GET /tasks둜 μžμ‹ μ΄ λ“±λ‘ν•œ νƒœμŠ€ν¬λ§Œ 보이도둝 λ³€κ²½ν•˜κΈ°
- admin κΆŒν•œ μ‚¬μš©μžλ§Œ μ ‘κ·Όν•  수 μžˆλŠ” μ—”λ“œν¬μΈνŠΈ λ§Œλ“€κΈ°



Test Code Run

go test ./...

or

go test -v ./...

About

Hπšπšπš™ HπšŠπš—πšπš•πšŽπš› Mπš˜πšπšžπš•πšŽπšœ πŸ“š

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors