Skip to content

Commit

Permalink
Merge pull request #23 from SSUMC-6th/randy/#6
Browse files Browse the repository at this point in the history
[randy]Chapter 6. API URL의 설계 & 프로젝트 세팅
  • Loading branch information
Jangwon0319 authored May 23, 2024
2 parents b2b8a38 + 1afe808 commit 17f864b
Show file tree
Hide file tree
Showing 2 changed files with 198 additions and 0 deletions.
67 changes: 67 additions & 0 deletions docs/chapter6/Ch06Keyword.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# Chapter 6. API URL의 설계 & 프로젝트 세팅


## 1️⃣ REST API

### ✅ API(Application Programming Interface)란
- 어플리케이션을 프로그래밍할 때, 보다 쉽게 할 수 있도록 해주는 도구들을 의미
- 응용 프로그램에서 사용할 수 있또록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다. - [출처 : 위키백과]

### ✅ REST(Representational State Transfer)란
1. HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고,
2. HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해
3. 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미합니다.

- ✏️ CRUD Operation
- Create : 데이터 생성(POST)
- Read : 데이터 조회(GET)
- Update : 데이터 수정(PUT, PATCH)
- Delete : 데이터 삭제(DELETE)

### ✅ REST API란
- HTTP를 기반으로 하는 웹 서비스 아키텍처를 의미하며 HTTP 메소드와 자원을 이용해 서로 간의 통신을 주고받는 방법

### ✅ REST Endpoint란
- 서비스를 사용 가능하도록 하는 서비스에서 제공하는 커뮤니케이션 채널의 한쪽 끝. 즉 요청을 받아 응답을 제공하는 서비스를 사용할 수 있는 지점을 의미

### ✅ HTTP Method
1. GET : 리소스 조회
2. POST:  요청 데이터 처리, 주로 등록에 사용
3. PUT : 리소스를 대체(덮어쓰기), 해당 리소스가 없으면 생성
4. PATCH : 리소스 부분 변경 (PUT이 전체 변경, PATCH는 일부 변경)
5. DELETE : 리소스 삭제


## 2️⃣ 세부적인 API 설계

### ✅ Path Variable(@PathVariable)
- 경로 변수를 표시하기 위해 매개변수에 사용
- 경로 변수는 중괄호 {id}로 둘러싸인 값을 나타낸다
- URL 경로에서 변수 값을 추출하여 매개변수에 할당

### ✅ Query String
- 사용자가 입력 데이터를 전달하는 방법중의 하나로, url 주소에 미리 협의된 데이터를 파라미터를 통해 넘기는 것을 말함
- query parameters( 물음표 뒤에 = 로 연결된 key value pair 부분)을 url 뒤에 덧붙여서 추가적인 정보를 서버 측에 전달하는 것

### ✅ Requset Body
- 서버로 전달되는 실제 데이터를 담고 있음(JSON 형태, form-data 형태)
- 예시 코드

```
{
“name” : “류장원”,
“phoneNum” : “010-1111-2222”,
"nickName" : "randy",
}
```

### ✅ Request Header
- 서버와 전송 시 메타데이터. 즉, **전송에 관련된 기타 정보들이 담기는 부분**



---
---
### 🔍 참고 레퍼런스
1. REST Endpoint 내용 - https://blog.naver.com/ghdalswl77/222401162545

131 changes: 131 additions & 0 deletions src/mission/chapter6/Ch06Mission.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@

# 6주차 미션

## API Endpoint, Request Body, Request Header, query String, Pathvariable이 포함된 API 명세서 만들기!

### 1️⃣ 홈 화면

- API Endpoint

```
GET /api/home
```


### 2️⃣ 마이 페이지 리뷰 작성

- API Endpoint
```
POST api/review/{store-id}/upload
```


- Request Body
```
{
"store_id" : "1",
"stars" : "4.5",
"content" : "리뷰 내용 작성",
"image" : "음식사진.png"
}
```

- Request Header

```
Authorization : accessToken (String)
```

### 3️⃣ 미션 목록 조회


- API Endpoint

```
모든 게시글 조회 : GET api/missions
단일 게시글 조회 : GET api/missions/{mission-id}
```

- Request Header

```
Authorization : accessToken (String)
```

### 4️⃣ 미션 성공 누르기


- API Endpoint
```
PATCH api/missions/{missoin-id}/success
```

- Request Body
```
{
"isSuccess" : "complete"
}
```

- Request Header

```
Authorization : accessToken (String)
```
### 5️⃣ 회원 가입 하기(소셜 로그인 고려 X)


- API Endpoint

```
# 서비스 이용 동의
POST /api/members/signup/service
# 개인정보 입력
POST /api/members/signup/info
# 선호 음식 선택
POST /api/members/signup/prefer-food
```

- Request Body

```
# 서비스 이용 동의
{
"total_agree" : "true",
"age_agree" : "true",
"service_agree" : "true",
"privacy_agree" : "true",
"location_agree" : "true",
"marketing_agree" : "true"
}
# 개인정보 입력
{
"member_id" : "1",
"name" : "류장원",
"gender" : "male",
"birth" : "2001-03-19",
"address" : "서울특별시 동작구 상도동"
}
# 선호 음식 선택
{
"prefer_food" : "한식"
}
```

- Request Header

```
Authorization : accessToken (String)
```

0 comments on commit 17f864b

Please sign in to comment.