Skip to content

User API Specification

이의찬 edited this page Apr 15, 2024 · 24 revisions
κΈ°λŠ₯ λ©”μ„œλ“œ URI λΉ„κ³ 
νŒ”λ‘œμš° μš”μ²­ POST /users/{user_id}/follow ⚠️
νŒ”λ‘œμš° 확인 GET /users/{user_id}/follow ⚠️
μ‚¬μš©μž 검색 GET /users?q= ⚠️
μ’‹μ•„μš” μ‚¬μš©μž 검색 GET /like?q= ⚠️
μ‚¬μš©μž ν”„λ‘œν•„ 쑰회 GET /users/{user_id} ⚠️
μ‚¬μš©μž ν”„λ‘œν•„ ν”Όλ“œ 쑰회 GET /users/{user_id}?page= ⚠️
  • βœ…: 확인 μ™„λ£Œ
  • ⚠️: λŒ€κΈ° μƒνƒœ
  • ❌: λ…Όμ˜ ν•„μš”

0️⃣ νƒ€μž… μ •μ˜

interface User {
  id: number;
  profileImage: string;
  name: string; 
  content: string;
}

interface ProfileFeed {
  id: number; 
  title: string;
  content: string;
  thubnailImage: string;
};

1️⃣ νŒ”λ‘œμš° μš”μ²­

interface Request {
  uri: '/users/{user_id}/follow';
  method: 'POST';
  body : {}
}

interface Response {
  code: '2000';
  data: {};
}

2️⃣ νŒ”λ‘œμš° 확인

interface Request {
  uri: '/users/{user_id}/follow';
  method: 'GET';
  body : {}
}

interface Response {
  code: '2000';
  data: {
    relationshipStatus: "self" | "following" | "none" | "pending";
  };
}

3️⃣ μ‚¬μš©μž 검색

μš°μ„  λͺ¨λ“  μž…λ ₯으둜 진행, μΆ”ν›„ μ“°λ‘œν‹€λ§ / λ””λ°”μš΄μŠ€ λ„μž… κ°€λŠ₯

interface Request {
  uri: "/users?q=";
  method: "GET"
  query:{
    q: string;
  }
  body: {};
}

interface Response {
  code: "2000";
  data:{
    users: User[] // 0️⃣ User
  }
}

4️⃣ μ’‹μ•„μš” μ‚¬μš©μž 검색

μš°μ„  λͺ¨λ“  μž…λ ₯으둜 진행, μΆ”ν›„ μ“°λ‘œν‹€λ§ / λ””λ°”μš΄μŠ€ λ„μž… κ°€λŠ₯

interface Request {
  uri: "/like?q=";
  method: "GET"
  query:{
    q: string;
  }
  body: {};
}

interface Response {
  code: "2000";
  data:{
    users: User[] // 0️⃣ User
  }
}

5️⃣ μ‚¬μš©μž ν”„λ‘œν•„ 쑰회

interface Request {
  uri: "/users/{user_id}";
  method: 'GET';
  body: {};
}

interface Response {
  code: "2000";
  data : {
    user: User; // 0️⃣ User
  }
}

6️⃣ μ‚¬μš©μž ν”„λ‘œν•„ ν”Όλ“œ

interface Request{
  uri: "/users/{user_id}?page=";
  method: "GET";
  query: {
    page: string; // default = 1
  };
}

interface Response {
  code: "2000";
  data : {
    feeds: Feed[]; // 0️⃣ ProfileFeed 
    currentPageNumber: number; // ν˜„μž¬ νŽ˜μ΄μ§€μ˜ 수
    pageSize: number; // νŽ˜μ΄μ§€ 크기
    numberOfElements: number; // μ‹€μ œ λ°μ΄ν„°μ˜ 수
    hasNext: boolean; // λ‹€μŒ μ‘΄μž¬ν•˜λŠ”μ§€
  }
}