diff --git a/week08/keyword/Keyword.md b/week08/keyword/Keyword.md new file mode 100644 index 0000000..003cf78 --- /dev/null +++ b/week08/keyword/Keyword.md @@ -0,0 +1,104 @@ +- Swagger + + ### πŸ”Ή **μ •μ˜** + + SwaggerλŠ” REST APIλ₯Ό λ¬Έμ„œν™”ν•˜κ³  ν…ŒμŠ€νŠΈν•  수 μžˆλŠ” **λ„κ΅¬Β·ν”„λ ˆμž„μ›Œν¬ μƒνƒœκ³„ 전체 이름**이닀. + + κ³Όκ±°μ—λŠ” β€œSwagger Specification(μŠ€μ›¨κ±° μŠ€νŽ™)"μ΄λΌλŠ” 자체 λ¬Έμ„œ ν‘œμ€€μ„ μ‚¬μš©ν–ˆμ§€λ§Œ, 이것이 λ°œμ „ν•΄ **OpenAPI Specification(OAS)**둜 이름이 λ°”λ€Œμ—ˆλ‹€. + + ν˜„μž¬ SwaggerλŠ” λ‹€μŒκ³Ό 같은 **도ꡬ λͺ¨μŒ**을 μ˜λ―Έν•œλ‹€: + + - Swagger UI (API λ¬Έμ„œ μ‹œκ°ν™”) + - Swagger Editor (λ¬Έμ„œ μž‘μ„±) + - Swagger Codegen (ν΄λΌμ΄μ–ΈνŠΈ/μ„œλ²„ μ½”λ“œ 생성) + - SwaggerHub (ν˜‘μ—… ν”Œλž«νΌ) + - Swagger Parser λ“± + + ### πŸ”Ή **속성 / νŠΉμ§•** + + - API μŠ€νŽ™(OpenAPI 기반)을 **μžλ™ UI νŽ˜μ΄μ§€λ‘œ λ Œλ”λ§**ν•΄ λ³΄μ—¬μ€Œ + - μ‹€μ‹œκ°„ API ν…ŒμŠ€νŠΈ κ°€λŠ₯ (Try it out) + - JSON/YAML 기반 + - 개발 ν™˜κ²½(Spring, Express, NestJS λ“±)κ³Ό μ‰½κ²Œ 연동 + + ### πŸ”Ή **μž₯점** + + - UIκ°€ 직관적이고 μ‚¬μš©ν•˜κΈ° 쉬움 + - νŒ€ ν˜‘μ—…μ— 맀우 μœ μš©ν•œ API λ¬Έμ„œ 제곡 + - API λ³€κ²½ μ‹œ μžλ™ μ—…λ°μ΄νŠΈ (μ½”λ“œ 기반 swagger generator μ‚¬μš© μ‹œ) + - λ°±μ—”λ“œ-ν”„λ‘ νŠΈ ν˜‘μ—… 속도 ν–₯상 (Mock ν…ŒμŠ€νŠΈ κ°€λŠ₯) + + ### πŸ”Ή **단점** + + - λ³΅μž‘ν•œ ꡬ쑰의 APIμ—μ„œλŠ” μŠ€νŽ™ 관리가 μ–΄λ €μšΈ 수 있음 + - μžλ™ μŠ€μΊλ‹ 방식은 ν”„λ ˆμž„μ›Œν¬ μ˜μ‘΄μ„±μ΄ κ°•ν•΄μ§ˆ 수 있음 + - μ»€μŠ€ν…€ μŠ€νŽ™μ„ μ„Έλ°€ν•˜κ²Œ 닀루렀면 YAML 지식이 ν•„μš” +- OpenAPI + + ### πŸ”Ή **μ •μ˜** + + OpenAPI Specification(OAS)은 RESTful APIλ₯Ό **ν‘œμ€€ν™”λœ λ¬Έμ„œ ν˜•μ‹μœΌλ‘œ μ •μ˜ν•˜λŠ” 규격**이닀. + + 즉, "API λ¬Έμ„œλ₯Ό μ–΄λ–»κ²Œ μž‘μ„±ν•΄μ•Ό ν•˜λŠ”μ§€"에 λŒ€ν•œ **곡식 ν‘œμ€€**. + + OpenAPIλŠ” Swagger μŠ€νŽ™μ˜ 후속 버전이며 + + ν˜„μž¬ κ°€μž₯ 널리 μ‚¬μš©λ˜λŠ” API λ¬Έμ„œ ν‘œμ€€μ΄λ‹€. + + ### πŸ”Ή **속성 / νŠΉμ§•** + + - JSON λ˜λŠ” YAML둜 API λͺ…μ„Έ μž‘μ„± + - 경둜(`/users`), λ©”μ„œλ“œ(`GET`, `POST`) λ“± API ꡬ쑰λ₯Ό λͺ…ν™•ν•˜κ²Œ ν‘œν˜„ + - μš”μ²­(Request) / 응닡(Response) / μŠ€ν‚€λ§ˆ(Schema) / λ³΄μ•ˆ(Security) λ“± 포함 + - Swagger UI 뿐만 μ•„λ‹ˆλΌ ReDoc, Postman λ“± λ‹€μ–‘ν•œ λ„κ΅¬μ—μ„œ 지원 + + ### πŸ”Ή **μž₯점** + + - REST API λ¬Έμ„œν™”μ˜ 사싀상 ν‘œμ€€ + - λ‹€μ–‘ν•œ μƒνƒœκ³„ 도ꡬ와 ν˜Έν™˜ + - λ¬Έμ„œλ₯Ό 기반으둜 μ½”λ“œ μžλ™ 생성 κ°€λŠ₯ + - API 계약(Contract) 기반 κ°œλ°œμ„ ν•  수 μžˆλ„λ‘ 지원 + + ### πŸ”Ή **단점** + + - μ΄ˆλ³΄μžμ—κ²Œ 문법(YAML/JSON)이 λ³΅μž‘ν•˜κ²Œ 느껴질 수 있음 + - 큰 ν”„λ‘œμ νŠΈμ—μ„œ 관리 λΉ„μš© 증가 + - λ‹¨μˆœ λ¬Έμ„œ ν‘œμ€€μ΄λΌ μ‹€ν–‰ λ‘œμ§μ€ 직접 κ΅¬ν˜„ν•΄μ•Ό 함 +- OpenAPI Component + + ### πŸ”Ή **μ •μ˜** + + OpenAPI의 `components`λŠ” **API λ¬Έμ„œμ—μ„œ μž¬μ‚¬μš© κ°€λŠ₯ν•œ μš”μ†Œλ“€μ˜ μ§‘ν•©**이닀. + + μΌμ’…μ˜ β€œκ³΅μš© μ»΄ν¬λ„ŒνŠΈ μ €μž₯μ†Œβ€λΌκ³  보면 λœλ‹€. + + μ—¬κΈ°μ—λŠ” λ‹€μŒ ν•­λͺ©λ“€ 포함됨: + + - `schemas` (DTO, 데이터 λͺ¨λΈ) + - `parameters` (header, query, path νŒŒλΌλ―Έν„°) + - `responses` (곡톡 응닡 ꡬ쑰) + - `requestBodies` (곡톡 μš”μ²­ ꡬ쑰) + - `securitySchemes` (JWT λ“± 인증 방식) + - `headers` + - `examples` + - `links` + + ### πŸ”Ή **μ—­ν• ** + + - λ°˜λ³΅λ˜λŠ” ꡬ쑰λ₯Ό λͺ¨μ•„μ„œ **μž¬μ‚¬μš©** + - λ¬Έμ„œ 쀑볡 μ΅œμ†Œν™” + - μœ μ§€λ³΄μˆ˜μ„± 증가 + - μŠ€ν‚€λ§ˆ μ •μ˜λ₯Ό μ€‘μ•™ν™”ν•˜μ—¬ API λ¬Έμ„œ ν’ˆμ§ˆ ν–₯상 + + μœ„ ꡬ쑰처럼 `/components/schemas/User`λ₯Ό μž¬μ‚¬μš©ν•  수 μžˆλ‹€. + + ### πŸ”Ή **μž₯점** + + - λ¬Έμ„œκ°€ 클수둝 components의 효용이 컀짐 + - νƒ€μž…/μŠ€ν‚€λ§ˆλ₯Ό 일괄 관리해 였λ₯˜ κ°μ†Œ + - API μš”μ²­Β·μ‘λ‹΅ ꡬ쑰가 일관성을 가짐 + + ### πŸ”Ή **단점** + + - μ»΄ν¬λ„ŒνŠΈκ°€ λ§Žμ•„μ§€λ©΄ 파일 ꡬ쑰가 λ³΅μž‘ν•΄μ§ + - 잘λͺ» μ„€κ³„ν•˜λ©΄ 였히렀 관리가 μ–΄λ €μ›Œμ§ \ No newline at end of file diff --git a/week08/mission/Mission.md b/week08/mission/Mission.md new file mode 100644 index 0000000..256b735 --- /dev/null +++ b/week08/mission/Mission.md @@ -0,0 +1,3 @@ +1 +2 +3