Overview
EndPoint와 Request/Reply 데이터를 설계하자.
협업을 편리하게 진행하기 위한 API 명세서를 작성하자.
API란
Appliation Programming Interface(API)
즉, Application을 Programming할 때 사용되는 Interface를 말한다.
소프트웨어 사이에 복잡한 것들을 감추고, 추상화를 통해 손 쉽게 마이그레이션 혹은 응용을 할 수 있게끔 하는 도구의 일종이다.
REST API
웹 어플리케이션에서는, REST API
를 자주 사용한다.REST API
란 말 그대로 REST
ful한 API를 일컫는다.
REST
Representational State Transfer 의 약자로, 자원을 이름으로 구별하여 자원의 상태(state)를 주고 받는 행위 전반을 말한다.
자원(resource), 자원에 대한 행위(HTTP Method), 그리고 행위에 대한 내용(HTTP Payload)로 나뉘어진다.
API
Endpoint
를 REST
하게 설계해보자.
RESTful API Endpoint
- 설계 규칙
- URI에 동사가 포함되지 않는다.
- URI에서 단어의 구분이 필요한 경우
-
를 사용한다. - 자원(resource)은 기본적으로 복수형으로 표현한다.
- 자원을 표기할 때 필요한 경우
/
값을 통해 명시적으로 표기한다.
...
API 설계
ERD
0. 요구사항
홈 화면, 마이 페이지 리뷰 작성, 미션 목록 조회(진행중, 진행 완료), 미션 성공 누르기,
회원 가입 하기(소셜 로그인 고려 X)
위의 기능을 구현하는데 필요한 API들을 설계하여
API Endpoint, Request Body, Request Header, query String, Path variable
이 포함된 간단한 명세서를 만들어 보자.
1. 홈 화면 조회
Endpoint :
GET /home
(/
로 해도 될듯?)Request Header :
Authorization: Bearer {access_token}
Request Body :
null
홈 화면의 Endpoint는 /home
으로 지정하였다.
이 부분은 협업 시 임의로 조정할 수 있기에, /
으로 지정할 수도 있다.
GET
이므로 Request Body
의 내용은 없다.
2. 마이 페이지 리뷰 작성
- Endpoint :
POST /my-page/reviews
- Request Header
Authorization: Bearer {access_token}
Content-Type: application/json
- Request Body :
// Review DTO 포맷에 맞게 { "review_grade": 5, "review_content": "마싯어용", // "review_reply": "이거는 나중에 patch로 넣으면 될듯" "review_date": 2023-11-09, "review_photo": BLOB }
Endpoint
로는 REST
하게 적절한 리소스를 배정해주었다.
또, HTTP Method
로 POST
를 사용하였기에, 리뷰 작성 양식에 맞는 Body
를 전송해준다.
3. 미션 목록 조회(진행중, 진행 완료)
- Endpoint :
GET /missions
- Request Header :
Authorization: Bearer {access_token}
- Request Body :
null
REST
하게 Endpoint
를 작성해주었고, 마찬가지로 GET
을 사용하였기에 Request Body
는 없다.
4. 미션 성공 누르기
Endpoint :
PATCH /missions/{mission_id}/success
Request Header
Authorization: Bearer {access_token}
Content-Type: application/json
Request Body
// 기존 미션 폼에 있는 success만 수정해주면 됨 { "mission_success": true }
미션 성공을 누르는 API
는 미션 Entity
에 status를 바꾸어주면 되는 작업이기에 비교적 간단하다.
기존에 저장소에 저장된 값을 일부 수정하기만 하면 된다.
그렇기에 HTTP Method
로 PATCH
를 사용해주었다.
5. 회원 가입 하기(소셜 로그인 고려X)
- Endpoint :
POST /signup
- Request Header :
null
- Request Body
// 회원가입 DTO { "user_name": "user", "user_password": "user@gmail.com", "user_email": "pw1234", "user_phonenumber": "01012341234", "user_photo": BLOB }
Endpoint
는 POST
를 사용하였고,
임의의 회원가입에 양식에 맞게 API
를 작성해주면 된다.
감사합니다.
'대외활동 > UMC 5th' 카테고리의 다른 글
Ne(o)rdinary Hackerthon 회고 (1) | 2023.12.02 |
---|---|
Ch05. SQL (0) | 2023.11.19 |
Ch04. DATABASE Design & AWS RDS Settings Practice (0) | 2023.10.08 |
Ch03. Web Server, WAS, Reverse Proxy Mission Mission (0) | 2023.10.03 |
Ch03. Web Server, WAS, Reverse Proxy (0) | 2023.10.03 |