Why most API paginations do not rely on HTTP Range header?

前端 未结 2 1810
小鲜肉 2021-02-20 14:13

I\'ve searched a lot but I can\'t find a good answer to this question. Being a HATEOAS aficionado, I would think that this header fit perfectly:

    Range: item=         

  • 2021-02-20 15:09

    Here the answers that I gently borrowed from this question thanks to @ptidel: Content-Range header - allowed units?.

    First, custom units are proposed in this draft HTTP/1.1, part 5: Range Requests and Partial Responses

    Second, there is a subtle difference, the first statement has been made for parsing purpose

        range-unit       = bytes-unit | other-range-unit
        bytes-unit       = "bytes"
        other-range-unit = token

    While the second statement has been made for producing HTTP request.

    Finally, the whole comment from Ferenc Mihaly summarizes perfectly the situation:

    I conform to the HTTP spec when I'm sending [a custom range unit] and they conform to HTTP when they ignore it

    WebDAV uses HTTP extensions correctly, IMO, but rarely works over the Internet for exactly this reason

    0 讨论(0)
  • 2021-02-20 15:13

    Most of the times you don't want to show all of your items by default. With ?p=2 style pages it's ok to reserve root / for first page. With "Range" header it would be strange behavior. HTTP became overbloated long time ago so I wouldn't recommend to accept every its headers as Truth.

    0 讨论(0)