Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ISSUE] 프로젝트 API 재협의 #6

Open
j2h30728 opened this issue Oct 19, 2024 · 9 comments
Open

[ISSUE] 프로젝트 API 재협의 #6

j2h30728 opened this issue Oct 19, 2024 · 9 comments
Labels
documentation Improvements or additions to documentation 논의

Comments

@j2h30728
Copy link
Member

j2h30728 commented Oct 19, 2024

주제

전체적인 API 설계를 재협의

  • 2024.10.19 오프라인 회의로 결정

해당하는 부분

  1. Image 필드
  2. verification category 상수 값 대문자로 변경
  3. upload verification
  4. verification count
  5. verification 내의 필드 내용

설명

1. Image 필드

  • 클라이언트에서 사용자가 이미지를 선택하고 폼을 제출할 때 서버에 이미지 파일로 전달합니다.

    • 등록 폼 제출시, 서버에서 이미지 등록 로직을 함께 진행하여 발생하는 지연을 아직 예측할 수 없기 때문에 별도의 이미지 등록 API를 만들지 않고 진행하는 것으로 결정합니다.
  • 폼 제출 완료 메시지에 필요한 이미지는 클라이언트에서 보여지는 이미지들은 클라이언트에서의 이미지 데이터를 사용하여 사용자에게 보여줍니다.

  • POST/verifications, POST /pets에 적용되는 사항입니다.

2. verification category 상수 값 대문자로 변경

  • 상수 필드 값임을 명시하기 위해 대문자로 변경합니다.
  • category : 'WALK' | 'BATH' | 'TREATS' | 'MEAL' | 'DAILY'

3. Upload Verification

  • 간식 인증에서 간식 종류를 verification option두고 있는 것을 간식 섭취 여부로 필드 값 변경합니다.

    • 트릿,처키, 캔, 비스킷 등과 같이 간식 종류 => 다 먹었어요, 남겼어요.
    • 이는, 다른 인증과의 타입 통일 및 견주의 간식 기록의 유효성을 위하여 변경합니다.
  • verificationOption에서 verificationDetail 으로 필드 명 변경합니다.

    • 각 인증(카테고리)에 관하여 뒷 받침하는 더 상세한 정보임을 표시하기 위해 변경합니다.
  • verification upload request body 타입의 통일 성을 위하여 필드 타입을 변경합니다.

    • verificationDetail 필드 타입을 string에서 number로 변경합니다. (기본 값 : 0)
      • 시간 및 양에 따른 척도를 표현하기 위하여 number 타입으로 변경합니다.
      • 순간포착 일상 인증은 verificationDetail 필드로 넣어줄 값이 없기 때문에 기본 값인 0을 넣어줍니다.
  • 변경 되는 필드

interface UploadVerificationRequestBody {
verificationDetail : number; // default : 0
comment ?: string; // (기본값 "")
image ?: File;
category : 'WALK' | 'BATH' | 'TREATS' | 'MEAL' | 'DAILY' // 대문자
}

4. verification count

  • pet information API에 verification count 데이터를 포함시키는 것으로 변경합니다.

    • 클라이언트에서 사용하는 verification count는 펫 정보와 함께 사용되고 있습니다.
    • 실제 작성된 백엔드 API 스웨거에서는 /api/verification/count 와 /api/pet/info로 API가 두 개로 설계 되어 있습니다.
  • 변경 전

mock API (최초 설계) 백엔드 API, 스웨거
image image
image
  • 변경 후

선택1

// GET /api/pets/{petId}
interface Pet {
  id: string;
  name: string;
  imageUrl: string;
  birthYear: number;
  gender: 'M' | 'F';
  verifications: {
     category : "WALK" | "MEAL" | "BATH" | "TREATS" | "DAILY"; // 사용자가 올린 카테고리 별로 존재
     verificationCount : number;
     data : Verification[]
}[]

선택2

// GET /api/pets/{petId}
interface Pet {
  id: string;
  name: string;
  imageUrl: string;
  birthYear: number;
  gender: 'M' | 'F';
  verifications: {
    meals: {
      total: number;
      data: Verification[];
    };
    walks: {
      total: number;
      data: Verification[];
    };
    baths: {
      total: number;
      data: Verification[];
    };
    treats: {
      total: number;
      data: Verification[];
    };
  };
}

5. verification 내의 필드 내용

verification 데이터 필드내에 작성자로 user 데이터를 포함시켜야합니다.

{
            id: "0",
            createdAt: "2024-04-21T12:00:00Z",
            category: "WALK",
            imageUrl: "imageUrl",
            verificationDetail: 70,
            comment:"왼쪽으로 가야되는데 오른쪽으로 간다고 개찡찡댔다... 다음타자 힘들듯^^",
            author: {
              id: "2",
              imageUrl: "imageUrl",
              name: "막둥이",
            },

함께 논의해야할 내용

  • 펫에 대한 정보를 요청했을때 반환되는 타입의 형태를 명확하게 확정해야합니다.

추가사항

  • 모든 API는 통일성 있게 RESTful API로 작성합니다.
@j2h30728 j2h30728 added 논의 documentation Improvements or additions to documentation labels Oct 19, 2024
@owonie
Copy link
Member

owonie commented Oct 19, 2024

논의 내용 정리해주셔서 감사합니다. 펫에 대한 정보 타입은 예시로 보여주신 선택 2가 나아보입니다.
인증 게시글 정보 조회 시 같은 형태로 response 값을 반환할 예정이기에, 선택 2를 추천합니다.

@j2h30728
Copy link
Member Author

@owonie
Copy link
Member

owonie commented Oct 22, 2024

작업완료:

  • image 필드 수정 : imageUrl?: string -> image?: File.
  • verification 필드명 수정 : verificationOption?: string -> verificationDetail: number
  • verification category 상수 값 대문자로 변경
  • verification 내의 필드 내용 수정 : author 를 속성 내에 포함

추가 구현사항:

  • 이미지 파일 업로드 (cloudinary 연동)
  • 피드 상세 조회 api 추가
  • restful API 를 기준으로, api 엔드포인트 수정 (ex: '/verification/create' -> get('/verification'))

다음 작업 목록:

  • infinite query response dto 변경
  • api response 값 mock API 에 맞추기

@owonie
Copy link
Member

owonie commented Oct 23, 2024

일시적으로 entity를 수정으로 인해, verification count 및 verification slide / calendar api 가 실행되지 않고있습니다.
제 쪽에선 엔티티 간의 관계를 다시 정리해줘야할 것 같아 시간이 조금 더 걸릴 예정입니다.

@owonie
Copy link
Member

owonie commented Oct 26, 2024

api 수정이 완료되었습니다. 명세서도 수정하였으니, 실제 호출과 함께 확인해주세요.

@j2h30728
Copy link
Member Author

pet information API에 verification count 데이터를 포함시키는 것으로 변경합니다.

위의 사항으로 협의 된 것으로 알고 있지만, 현재 API 내의 반환 값은 이전과 동일한 상태입니다.

  • /pets/{petId}
    image

@owonie
Copy link
Member

owonie commented Oct 29, 2024

반영 완료하였습니다. 감사합니다 :)

@owonie
Copy link
Member

owonie commented Oct 30, 2024

피드백 반영:

  • response 값에 message, data 필드가 들어가도록 통일
  • api 별 에러처리 및 에러 메시지 추가 작업

@j2h30728
Copy link
Member Author

User API 필드명 변경 점

  • pet 연결 유무를 확인하기위해 hasPet 필드를 사용
  • 연결된 pet 정보(id)를 확인하기 위해 pets 필드를 사용
{
  "message": "데이터 조회 성공",
  "data": {
    "name": "유저 이름", // string
    "imageUrl": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRdgzabgOIIDQl_Ul7FozhJ_QfjEaGeQTSMKg&s", // string
    "pets" : [], // Pet[] 사용자와 연결된 pet 정보들
    "hasPet": true, // boolean
    "refreshToken": "xxxx" //string
  }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation 논의
Projects
None yet
Development

No branches or pull requests

2 participants