HTTP Range 헤더를 활용한 Pagination 구현

Source

  • Evernote/Advanced View Required/npcode » HTTP1.1의 Range 요청과 이를 활용한 Pagination.md

Summary

HTTP/1.1의 Range 요청을 표준화된 방식으로 활용하여 웹 애플리케이션의 Pagination을 구현하는 방법을 설명합니다. 기존 RFC 2616는 bytes 단위만 명확히 정의했으나, httpbis 개정안에서는 이해하지 못하는 단위를 무시하거나 실패 처리하는 규칙을 명확히 했습니다. 이를 바탕으로 저자는 ‘pages’라는 커스텀 단위를 사용하여 Accept-Ranges, Range, Content-Range 헤더를 통해 페이지 단위의 리소스 요청과 응답을 처리하는 스키마를 제안합니다. 이는 query string 방식보다 표준화된 인터페이스를 제공하여 개발자 간 이해와 예외 처리의 일관성을 높이는 것을 목적으로 합니다.

Key Points

  • HTTP/1.1 Range 요청은 리소스의 일부분만 가져오기 위해 사용되며, 표준 단위는 bytes입니다.
  • httpbis 개정안은 서버가 이해하지 못하는 Range 단위를 무시하거나 클라이언트가 실패 처리해야 함을 명시하여 커스텀 단위 사용의 불확실성을 줄였습니다.
  • Pagination을 위해 ‘pages’ 단위를 정의하고, Accept-Ranges: pages로 지원 여부를 알립니다.
  • 클라이언트는 Range: pages=1 형식으로 특정 페이지를 요청합니다.
  • 서버는 206 Partial Content와 함께 Content-Range: pages 1/2 형식으로 현재 페이지와 총 페이지 수를 응답합니다.
  • 표준 HTTP 헤더를 활용함으로써 query string 방식 대비 인터페이스의 표준화와 개발자 간 의사소통 비용을 절감할 수 있습니다.