티스토리 뷰

UMC - Node.js

3. API URL 설계

염두리안 2025. 4. 2. 16:40
728x90
반응형

API? Application을 Programming할 때 사용되는 Interface => 보다 쉽게 할 수 있도록 도와줌

REST API? HTTP을 기반으로 하는 웹 아키텍처(HTTP메소드와 자원을 이용해 서로 간 통신을 주고 받음)

  • API Endpoint : 해당 API를 호출하기 위한 HTTP메소드, URL 포함

HTTP 메소드 : GET(조회) | POST(생성) | PUT(전채 갱신) | PATCH(일부 갱신) | DELETE(삭제)

RESTful API 설계 원칙

  • URI에 동사 포함 X | 단어 구분의 경우 - 사용 | 자원은 기본적으로 복수형 | 단, 하나의 자원을 명시적으로 표현하기 위해선 /users/id와 같은 식별값을 추가로 사용 | 자원 간 연관관계가 있을 때, URI에 표현
  • 회원 탈퇴시 곧바로 삭제가 아닌 비활성화(추후 계정 복구) 고려시 DELETE로 설계 X → PATCH 해서 status를 active에서 inactive로 변경하게 함

N:M 관계의 경우... 비즈니스 로직상 더 중요한 대상을 계층 관계에서 앞에 두는 방법이 있다!

 

세부적인 API 설계

  • path variable : 특정 대상을 지목할 때
    • GET https://yamdurian.com/example/3 ← 3이 DB 상에서 게시글의 기본키임(식별값)
  • query string : 단 하나만 조회하는게 아닐 때(보통 검색 조회시 사용) | 쿼리스트링은 엔드포인트에 포함되지 않음
    • GET /users/example?name=yamdurian&age=26 → &을 통해서 전달하려는 값을 여러 개 연결 가능
  • request body : url에 노출되지 않고, request body에 해당 데이터를 담을 수 있으며, 보통 json 형태(혹은 form-data형태)로 담아서 서버로 전송
  • request header : 전송에 관련된 기타 정보들이 담기는 부분... body 데이터가 어떤 형식인지, 혹은 그냥 데이터를 담기도 함 | 대표적으로 토큰을 헤더에 담음

미션 기록

홈화면

  • 조회 → GET 메소드 사용
  • 로그인 후 홈에서 내가 받은 미션 확인 가능 → /users/{userId}/my-mission 로 엔드포인트 설정
GET /users/{userId}/my-mission

 

마이페이지 리뷰 작성

  • 새로운 리뷰 작성 → POST 메소드 사용
  • 마이페이지에서 리뷰를 작성하는 것이기에 /users/{userId}/my-page/reviews 로 엔드포인트 설정
  • 리뷰작성 시 입력 받는 데이터 : 가게이름(store_id), 내용(body), 점수(score), 이미지(image_url)
  • 로그인된 상태이기에 request header는 Authorization : accessToken (String)
POST /users/{userId}/my-page/reviews
Authorization : accessToken (String)
Content-Type: application/json

{
	"store_id": bigint,
  "body": text,
  "score": "float,
  "image_url": text
}

 

미션 목록 조회(진행중, 진행 완료)

  • 조회 → GET 메소드 사용
  • 미션 목록 → /users/{userId}/my-mission 로 엔드포인트 설정
// 진행 중
GET /users/{userId}/my-mission?status=active
// 진행 완료
GET /users/{userId}/my-mission?status=completed

 

미션 성공 누르기

  • 미션 상태가 바뀜(일부 갱신) → PATCH메소드 사용
  • 미션 목록에서 status값이 진행 중(active)인 값을 수정해야 하기 때문에 엔드포인트는 /users/{userId}/my-mission?status=active 로 설정
  • Request body는 status 값을 active에서 completed로 수정
  • 로그인된 상태이기에 request header는 Authorization : accessToken (String)
PATCH /users/{userId}/my-mission?status=active
Authorization : accessToken (String)
Content-Type: application/json

{
  "status": "completed"
}

 

회원 가입 하기(소셜로그인 고려 X)

  • 새로운 사용자의 생성 → POST메소드 사용
  • 생성 후 id가 부여되기에 /users/{userId} 방식은 X ⇒ /users 로 엔드포인트 설정
  • 회원가입 시 입력 받는 데이터 : 이름(name), 성별(gender), 생년월일(age), 주소(address)
  • 로그인된 상태이기에 request header는 Authorization : accessToken (String)
POST /users
Authorization : accessToken (String)
Content-Type: application/json

{
  "name": varchar(20),
  "gender": varchar(10),
  "age": int,
  "address": varchar(40)
}
728x90
반응형

'UMC - Node.js' 카테고리의 다른 글

ES6와 프로젝트 파일 구조의 이해  (0) 2025.04.10
2. 실전 SQL  (0) 2025.03.26
1. 데이터베이스 설계  (0) 2025.03.17
최근에 올라온 글
최근에 달린 댓글
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Total
Today
Yesterday
반응형