-
Notifications
You must be signed in to change notification settings - Fork 6
메시지 조회 API 사용법
Richard JEON edited this page Jul 22, 2022
·
1 revision
- 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로 가정하겠습니다.
/api/messages?channelIds=1
- needPastMessage=true, messageCount=20 기본값이 적용됩니다.
-
1번 채널의 메시지를, 작성시간 내림차순으로 정렬하여, 20개까지 주세요
가 됩니다.
/api/messages?channelIds=1&messageId=21
- 채널에 최초 접속했을 때 40번부터 21번까지의 메시지가 렌더링 되었다고 가정하겠습니다.
- ID가 커질수록 더 미래에 작성된 메시지이므로, 화면에는 40번 -> 39번 순으로 노출됩니다.
- 즉, 최초 채널 진입 시 가장 아래에 렌더링 되어있는 메시지의 아이디는 21번이 됩니다.
- 이 상황에서 더 아래로 스크롤을 내려 더 과거 메시지를 보려 한다면 위와 같이 요청해주셔야 합니다.
- needPastMessage=true, messageCount=20 기본값이 적용됩니다.
-
1번 채널 메시지 중, 21번 메시지 보다 과거 메시지를, 작성시간 내림차순 정렬해서, 20개까지 주세요
가 됩니다.
/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개까지 주세요
/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개까지 주세요
가 됩니다.