22.10.5 마지막 페이지 번호 알려 주기
지금도 페이지로서 기능은 충분합니다. 하지만 조금만 더 기능을 추가해 볼까요? 마지막 페이지를 알 수 있다면 클라이언트가 더욱 편하겠지요? 응답 내용의 형식을 바꾸어 새로운 필드를 설정하는 방법, Response 헤더 중 Link를 설정하는 방법, 커스텀 헤더를 설정하는 방법으로 이 정보를 알려 줄 수도 있습니다.
이 중에서 우리는 커스텀 헤더를 설정하는 방법을 사용하겠습니다.
src/api/posts/posts.ctrl.js - list
export const list = async ctx => { // query는 문자열이기 때문에 숫자로 변환해 주어야 합니다. // 값이 주어지지 않았다면 1을 기본으로 사용합니다. const page = parseInt(ctx.query.page || '1', 10); if (page < 1) { ctx.status = 400; return; } try { const posts = await Post.find() .sort({ _id: -1 }) .limit(10) .skip((page - 1) * 10) .exec(); const postCount = await Post.countDocuments().exec(); ctx.set('Last-Page', Math.ceil(postCount / 10)); ctx.body = posts; } catch (e) { ctx.throw(500, e); } };