Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
101 changes: 101 additions & 0 deletions week05/keyword/keyword.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
- 환경 변수

**정의**

환경 변수는 프로그램이 실행될 때 외부에서 설정하는 값으로, 코드 내부에 직접 입력하지 않고도 설정할 수 있습니다.

**속성**

- **보안성**: 비밀번호나 API 키와 같은 민감한 정보를 코드에 직접 입력하지 않고 환경 변수로 관리합니다.
- **유연성**: 개발, 테스트, 운영 환경에 따라 다른 설정을 적용할 수 있습니다.

**장점**

- **보안 강화**: 민감한 정보를 코드에 직접 입력하지 않아 노출 위험이 줄어듭니다.
- **환경별 설정 용이**: 다양한 환경에 맞게 설정을 쉽게 변경할 수 있습니다.

**단점**

- **관리 복잡성**: 환경 변수가 많아지면 관리가 어려워질 수 있습니다.
- **의존성 문제**: 환경 변수가 설정되지 않으면 애플리케이션이 제대로 작동하지 않을 수 있습니다.
- CORS

**정의**

CORS는 웹 브라우저에서 다른 도메인의 리소스에 접근할 수 있도록 허용하는 보안 기능입니다.

**속성**

- **보안 정책**: 기본적으로 브라우저는 다른 도메인의 리소스 요청을 차단합니다.
- **서버 설정 필요**: 서버에서 특정 도메인에 대한 접근을 허용하도록 설정해야 합니다.

**장점**

- **리소스 공유 가능**: 다른 도메인 간에 리소스를 공유할 수 있습니다.
- **유연한 API 사용**: 외부 API를 사용할 때 유용합니다.

**단점**

- **보안 위험**: 잘못된 설정은 보안 취약점을 초래할 수 있습니다.
- **설정 복잡성**: 정확한 설정이 필요하며, 실수로 인해 문제가 발생할 수 있습니다.
- DB Connection, DB Connection Pool

**정의**

- **DB 연결**: 애플리케이션이 데이터베이스와 통신하기 위해 연결을 설정하는 것.
- **연결 풀**: 미리 여러 개의 DB 연결을 만들어두고, 필요할 때마다 재사용하는 기술.

**속성**

- **성능 향상**: 연결을 재사용하여 성능을 높입니다.
- **자원 관리**: DB 연결 수를 제한하여 자원을 효율적으로 사용합니다.

**장점**

- **빠른 응답**: 새로운 연결을 생성하는 시간 절약.
- **자원 절약**: 불필요한 연결 생성을 방지.

**단점**

- **복잡성 증가**: 연결 풀 관리가 필요합니다.
- **잠재적 오류**: 풀에 문제가 생기면 전체 애플리케이션에 영향.
- 비동기 (async, await)
- **정의**

비동기 처리란 작업이 완료될 때까지 기다리지 않고 다음 작업을 수행하는 방식입니다. `async`와 `await`는 비동기 코드를 동기처럼 작성할 수 있게 도와줍니다.

**속성**

- **`async` 함수**: 항상 `Promise`를 반환합니다.
- **`await` 키워드**: `Promise`가 해결될 때까지 기다립니다.

**장점**

- **가독성 향상**: 코드가 더 직관적이고 읽기 쉬워집니다.
- **에러 처리 용이**: `try/catch`를 사용하여 에러를 쉽게 처리할 수 있습니다.

**단점**

- **호환성 문제**: 구형 환경에서는 지원되지 않을 수 있습니다.
- **복잡한 흐름**: 복잡한 비동기 로직에서는 흐름을 이해하기 어려울 수 있습니다.
- try/catch/finally

**정의**

`try/catch/finally`는 코드에서 발생할 수 있는 에러를 처리하기 위한 구조입니다.

**속성**

- **`try` 블록**: 에러가 발생할 수 있는 코드를 작성합니다.
- **`catch` 블록**: 에러가 발생했을 때 실행되는 코드입니다.
- **`finally` 블록**: 에러 발생 여부와 상관없이 항상 실행되는 코드입니다.

**장점**

- **에러 처리**: 예외 상황을 적절히 처리하여 프로그램의 안정성을 높입니다.
- **자원 정리**: `finally`를 사용하여 자원을 정리할 수 있습니다.

**단점**

- **과도한 사용**: 불필요하게 사용하면 코드가 복잡해질 수 있습니다.
- **비동기 코드 제한**: 비동기 코드에서는 `try/catch`가 예상대로 작동하지 않을 수 있습니다.
45 changes: 45 additions & 0 deletions week05/mission/mission.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
**1. 특정 지역에 가게 추가하기 API**

![Image](https://private-user-images.githubusercontent.com/156819279/438709786-a136bd68-2c70-4161-9d0d-28dfde3518f7.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NjE4ODkzMDksIm5iZiI6MTc2MTg4OTAwOSwicGF0aCI6Ii8xNTY4MTkyNzkvNDM4NzA5Nzg2LWExMzZiZDY4LTJjNzAtNDE2MS05ZDBkLTI4ZGZkZTM1MThmNy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUxMDMxJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MTAzMVQwNTM2NDlaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT02OTMzNDUzNDcwYjcyMjFkZjUwNDY1MDZhNmI3YzlmNTQzZWEyZTEyYWIzNmY4OTRjODM3MjFiMGViNTY0ZTllJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.k-3AxYEXRj5Ve20n-HmXlvQs4hYj3V6CSaZynOhLBJM)

| **항목** | **값** |
| --- | --- |
| Method | POST |
| URL | http://localhost:3000/stores |
| Headers | [Key] Content-Type [Value] application/json |
| Headers | [Key] Authorization [Value] Bearer testtoken |
| Body | {"name": "김밥천국 강남점","address": "서울시 강남구 어딘가","regionId": 3} |

**2. 가게에 리뷰 추가하기 API**

![Image](https://private-user-images.githubusercontent.com/156819279/438709282-7a4de01e-c03e-4dce-aea7-6096dc830d80.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NjE4ODkzMDksIm5iZiI6MTc2MTg4OTAwOSwicGF0aCI6Ii8xNTY4MTkyNzkvNDM4NzA5MjgyLTdhNGRlMDFlLWMwM2UtNGRjZS1hZWE3LTYwOTZkYzgzMGQ4MC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUxMDMxJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MTAzMVQwNTM2NDlaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT01ZDVhYTRmMWFjYTBmOGQ5ODI5MGE2ZjRhMGI1NDVlMjE0NWUwODBjNjZjZGRjOThjZjYyM2QwMzg3MGRkOTlhJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.fHpFwHTjUDOWuPw18nMPYfAhFRzhbfZT2kPA4wOM-5E)

| **항목** | **값** |
| --- | --- |
| Method | POST |
| URL | http://localhost:3000/reviews |
| Body | {"memberId": 3,"storeId": 10,"body": "음식이 정말 맛있었어요!","score": 5} |

**3. 가게에 미션 추가하기 API**

![Image](https://private-user-images.githubusercontent.com/156819279/438710701-a7a13961-8b0f-471f-9a8f-bfeba5ad0510.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NjE4ODkzMDksIm5iZiI6MTc2MTg4OTAwOSwicGF0aCI6Ii8xNTY4MTkyNzkvNDM4NzEwNzAxLWE3YTEzOTYxLThiMGYtNDcxZi05YThmLWJmZWJhNWFkMDUxMC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUxMDMxJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MTAzMVQwNTM2NDlaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04MjE0OTgwOTYxMDAwZjkwZGUzOTYwNmZhNmJlNTBmZTEzOTQ4MGE1YzE3YWU0YTNhM2NiNTJkMWE1Njk4MGJkJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.emuyU-Lng5DI--zx9D8P-J_CXwRC8tdJwUf1zNvhf2k)

| **항목** | **값** |
| --- | --- |
| Method | POST |
| URL | http://localhost:3000/stores/10/missions |
| Headers | [Key] Content-Type [Value] application/json |
| Headers | [Key] Authorization [Value] Bearer testtoken |
| Body | {"title": "10,000원 이상 주문하기","category": "한식","reward": "500 포인트"} |

**4. 가게의 미션을 도전 중인 미션에 추가(미션 도전하기) API**

![Image](https://private-user-images.githubusercontent.com/156819279/438711467-622b1eb8-224b-464e-8c9f-a653f215098b.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NjE4ODkzMDksIm5iZiI6MTc2MTg4OTAwOSwicGF0aCI6Ii8xNTY4MTkyNzkvNDM4NzExNDY3LTYyMmIxZWI4LTIyNGItNDY0ZS04YzlmLWE2NTNmMjE1MDk4Yi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUxMDMxJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MTAzMVQwNTM2NDlaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04NTQ4OGJjMGU0NWFiNWI5Y2E0NTVmMjEyN2Y1YjZmMDRlNTQ0MTAwNGE0MWQyODAxYTk0ZjVhYjFjOGI5MjlkJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.6AW95pnwwhKfBX0hagEr0b8atXrRnti-xR0TmqHrLS0)

| **항목** | **값** |
| --- | --- |
| Method | POST |
| URL | http://localhost:3000/member-missions |
| Headers | [Key] Content-Type [Value] application/json |
| Headers | [Key] Authorization [Value] Bearer testtoken |
| Body | {"memberId": 3,"missionId": 7} |