Skip to content

메시지 조회 API 사용법

Richard JEON edited this page Jul 22, 2022 · 1 revision

메시지 조회 API 사용법

기본 정보

  • baseUrl : /api/messages
  • QueryParameters
    • channelIds : 조회하고자 하는 채널 ID. 쿼리스트링으로 여러 번 선언하여 여러 채널에 걸쳐 조회 가능.
    • keyword : 검색어로 조회하고자 할 떄 사용
    • messageId : 특정 메시지를 기준으로 하여 과거 또는 미래 메시지를 조회하고자 할 때 사용
    • date : 특정 날짜+시간 기준으로 조회하고자 할 때 사용. ISO 형식으로 전달되어야함
    • needPastMessage : 위 아래 스크롤 대응을 위한, 과거 또는 미래 메시지 요청 플래그. 기본값 true.
    • messageCount : 응답받고자 하는 메시지 최대 갯수. 기본값 20.
  • 응답 양식
{
  "isLast": false,
  "messages" [
    {
      "id": 1,
      "memberId": 1,
      "username": "리차드(전형중)",
      "userThumbnail": "https://richard.png",
      "text": "이것은 공지사항이 아닙니다",
      "postedDate": "2022-07-12T21:01:56",
      "postedDate": "2022-07-12T21:01:56",
    },
    {},
    ...
  ]
}



주의사항

  • React Query를 사용하여, 전달하고자 하는 값이 없는 쿼리 파라미터도 key를 보내야 하는 상황입니다.
  • 백엔드에서는 이를 인지하여 key도 전달되지 않을 경우, key는 전달되었으나 값이 없는 경우 모두에 대응하여 needPastMessage, messageCount 기본값을 적용해두었습니다.
  • 다만 이하 API 사용법에서는 명료한 전달을 위해 전달해야하는 value에 대해서만 key를 명시하여 문서를 작성하였으니 이 점 참고부탁드립니다.
  • 메시지 목록을 볼 때, 최신 메시지가 상단에 노출되어야 하므로 항상 작성시간 내림차순으로 정렬하여 응답합니다.



상세 시나리오

4기-공지사항 채널을 예시로 사용하겠습니다.
4기-공지사항 채널의 ID는 1로 가정하겠습니다.


4기-공지사항 채널에 최초 진입할 때

/api/messages?channelIds=1
  • needPastMessage=true, messageCount=20 기본값이 적용됩니다.
  • 1번 채널의 메시지를, 작성시간 내림차순으로 정렬하여, 20개까지 주세요 가 됩니다.



4기-공지사항 채널에 접속 후 아래로 스크롤할 때

/api/messages?channelIds=1&messageId=21
  • 채널에 최초 접속했을 때 40번부터 21번까지의 메시지가 렌더링 되었다고 가정하겠습니다.
  • ID가 커질수록 더 미래에 작성된 메시지이므로, 화면에는 40번 -> 39번 순으로 노출됩니다.
  • 즉, 최초 채널 진입 시 가장 아래에 렌더링 되어있는 메시지의 아이디는 21번이 됩니다.
  • 이 상황에서 더 아래로 스크롤을 내려 더 과거 메시지를 보려 한다면 위와 같이 요청해주셔야 합니다.
  • needPastMessage=true, messageCount=20 기본값이 적용됩니다.
  • 1번 채널 메시지 중, 21번 메시지 보다 과거 메시지를, 작성시간 내림차순 정렬해서, 20개까지 주세요 가 됩니다.



7월 12일로 이동할 때

/api/messages?channelIds=1&date=2022-07-12T23:59:59
  • 7월 12일에 작성된 메시지를 보고 싶은 상황이라고 가정하겠습니다.
  • 줍줍 사용자는 시간을 선택할 수는 없고 날짜까지만 선택할 수 있습니다.
  • 날짜를 선택하면, 줍줍 프론트엔드는 해당 날짜에 23:59:59 라는 시간조건을 포함하여 전달합니다.
  • needPastMessage=true, messageCount=20 기본값이 적용됩니다.
  • 결과적으로 아래와 같은 요청이 만들어지게 됩니다.
  • 1번 채널 메시지 중, 7월12일 23시59분59초 보다 과거 메시지를, 작성시간 내림차순 정렬해서, 20개까지 주세요



7월 12일로 이동한 뒤 위로 스크롤할 때

/api/messages?channelIds=1&date=2022-07-12T23:59:59&needPastMessage=false
/api/messages?channelIds=1&messageId=11&needPastMessage=false
  • 7월 12일로 이동한 뒤에 이보다 미래에 작성된 메시지를 보고자 스크롤을 위로 움직였다고 가정하겠습니다.
  • 이때는 두 가지 사용 방법이 가능합니다.
    • 첫째는 날짜를 기준으로 검색하는 방법입니다.
      • 7월 12일 23:59:59 이후에 작성된 메시지를 요청하는 방식입니다.
      • /api/messages?channelIds=1&date=2022-07-12T23:59:59&needPastMessage=false
      • messageCount=20 기본값이 적용됩니다.
      • 1번 채널의 메시지 중, 7월 12일 23:59:59 기준으로, 이후에 작성된 메시지를, 작성시간 기준 내림차순 정렬하여, 20개까지 주세요 가 됩니다.
    • 두번째는 메시지 아이디를 기준으로 검색하는 방법입니다.
      • 가령 7월 12일 23:59:59 보다 과거에 작성된 메시지 중 가장 최근에 작성된 메시지 아이디를 11로 가정하겠습니다.
      • /api/messages?channelIds=1&messageId=11&needPastMessage=false
      • messageCount=20 기본값이 적용됩니다.
      • 1번 채널의 메시지 중, 11번 메시지 기준으로, 이후에 작성된 메시지를, 작성시간 기준 내림차순 정렬하여, 20개까지 주세요 가 됩니다.



검색어로 조회할 때

/api/messages?channelIds=1&keyword=리차드
  • 어느 채널에 접속하더라도 최상단에 검색창이 존재합니다.
  • 따라서 검색창에서 검색하는 행위는 기본적으로는 해당 채널 기준으로 검색하는 것이 됩니다.
  • 다만 추후 구현 예정인 것은, 상세 검색 옵션 버튼을 제공하여, 여러 채널에 걸쳐 검색할 수 있게 제공할 예정입니다.
    • 여러 채널에 걸쳐 검색할 경우 channelIds=1&channelIds=2 와 같이 채널 아이디를 여러개 전달해주시면 됩니다만 이번 예시에선 다루지 않겠습니다.
  • needPastMessage=true, messageCount=20 기본값이 적용됩니다.
  • 1번 채널의 메시지 중, 리차드 라는 키워드가 포함된 메시지들을, 작성시간 내림차순 정렬하여, 20개까지 주세요 가 됩니다.



검색어로 조회한 후 스크롤을 아래로 내릴 때

/api/messages?channelIds=1&keyword=리차드&messageId=11
  • 검색어로 조회한 이후 날짜로 이동 기능은 제공하지 않습니다.
    • 따라서 위로 스크롤을 올릴 때 렌더링 되어있지 않은 메시지는 존재하지 않습니다.
    • 즉 검색 후에는 아래로 스크롤 내리는 상황에 대해서만 대응하면 됩니다.
  • needPastMessage=true, messageCount=20 기본값이 적용됩니다.
  • 1번 채널의 메시지 중, 리차드 라는 키워드가 포함되어있고, 11번 메시지 보다 과거에 작성된 메시지들을, 작성시간 내림차순 정렬하여 20개까지 주세요 가 됩니다.
Clone this wiki locally