Super Kawaii Cute Cat Kaoani
본문 바로가기
🏃‍♀️ 대외활동/UMC 7기 - Node.js

[UMC 7th Server] Chapter 3. API URL의 설계 & 프로젝트 세팅

by wonee1 2024. 10. 10.
728x90

Chapter 3. API URL의 설계 & 프로젝트 세팅 워크북 

 
 
 
 
 

🎯핵심 키워드 정리


 
 
 

🔹RestFul API

 
 

  • 자원(URI) 기반: RESTful API는 서버의 모든 데이터 또는 기능을 하나의 '자원(Resource)'으로 간주한다. 각 자원은 고유한 식별자(URI)로 식별되며, 클라이언트는 이 URI를 통해 자원에 접근할 수 있다.


 
💡 사용자 정보를 반환하는 응답의 경우:

  • 표현의 통일성: RESTful API는 요청을 통해 반환되는 자원의 표현이 일관되어야 하며, 이를 통해 클라이언트가 자원에 대한 이해를 쉽게 할 수 있다.
  • 캐시 가능성: RESTful API는 클라이언트의 요청에 대해 캐싱이 가능해야 한다. 이를 통해 응답 시간을 향상시키고 서버의 부하를 줄일 수 있다. 응답에는 캐시 관련 헤더가 포함되어 클라이언트가 해당 응답을 캐시할지 여부를 결정할 수 있다.
  • 계층화된 시스템 구조: RESTful 아키텍처는 계층 구조를 갖고 있어, 클라이언트는 API 서버가 직접 데이터베이스와 통신하는지, 다른 서비스와 통신하는지, 또는 여러 계층을 거쳐 통신하는지 알 필요가 없다.

 
 
 
🔹 개념 마인드맵 정리  
 
 

 

 
 

 
 
 
 

☑️ 실습 인증


 
 
 
 
1. 명령어 실행 후 오류 확인  
 

node src/index.js

 
 

 
 
 
2. type: “module”을 추가한 후 실행  
 
 

 
 
 
 
 
3. Setting.json 파일을 생성 코드 작성 
 
 

 
 
 
4. script 수정 
 
 

 
 

npm run start

 

 
 
 
 
5. localhost 3000 실행된 것 확인 완료
 
 

 
 


 
 
 

🔥 미션 인증


 
 

API 명세서

 
1. 회원 가입 (회원 가입하기 기능)
 

  • 설명: 새로운 사용자를 등록
  • Endpoint: POST /api/users/register
  • Request Body:

 
 

{
  "user_name": "string",
  "password": "string",
  "email": "string"
}

 

  • Response:
    • 201 Created: 사용자 등록 성공
    • 400 Bad Request: 잘못된 입력 값

2. 홈 화면 - 내가 받은 미션 목록 조회 (진행중, 완료 포함)
 
 

  • 설명: 사용자가 받은 미션들을 조회
  • Endpoint: GET /api/missions
  • Query String:
    • status: in-progress 또는 completed (필터링)
  • Request Header:
    • Authorization: Bearer <token>
  • Response:
[
  {
    "mission_id": 1,
    "description": "미션 설명",
    "mission_status": "수행 중",
    "region": "Seoul",
    "created_at": "2024-10-08T10:15:30"
  },
  {
    "mission_id": 2,
    "description": "미션 설명",
    "mission_status": "완료",
    "region": "Busan",
    "created_at": "2024-10-05T09:00:00"
  }
]

 
 
 
3. 마이 페이지 - 리뷰 작성 (리뷰 작성 기능)

  • 설명: 사용자가 가게에 대한 리뷰를 작성
  • Endpoint: POST /api/reviews
  • Request Body:
{
  "store_id": 1,
  "rating": 5,
  "review_text": "리뷰 내용"
}

 
 

  • Request Header:
    • Authorization: Bearer <token>
    • Content-Type: application/json
  • Response:
    • 201 Created: 리뷰 작성 성공
    • 400 Bad Request: 잘못된 입력 값

 
4. 미션 목록 조회 (진행 중인 미션과 완료된 미션)

  • 설명: 사용자가 진행 중인 미션 또는 완료된 미션 목록을 조회
  • Endpoint: GET /api/users/{user_id}/missions
  • Query String:
    • status: in-progress 또는 completed
  • Path Variable:
    • user_id: 조회할 사용자의 ID
  • Request Header:
    • Authorization: Bearer <token>
  • Response:
[
  {
    "mission_id": 1,
    "description": "미션 설명",
    "status": "진행 중",
    "completed_at": null},
  {
    "mission_id": 2,
    "description": "미션 설명",
    "status": "완료",
    "completed_at": "2024-10-05T12:34:56"
  }
]

 
 
5. 미션 성공 누르기 (미션 완료 처리)
 

  • 설명: 사용자가 미션을 완료로 변경.
  • Endpoint: PATCH /api/missions/{mission_id}/complete
  • Path Variable:
    • mission_id: 완료 처리할 미션의 ID
  • Request Header:
    • Authorization: Bearer <token>
  • Response:
    • 200 OK: 미션 완료 성공
    • 400 Bad Request: 미션 상태가 이미 완료되었거나 유효하지 않은 경우
728x90