Popularity
4.9
Declining
Activity
1.4
Growing
41
2
7

Monthly Downloads: 3,058
Programming language: Elixir
License: MIT License
Latest version: v3.1.0

scrivener_headers alternatives and similar packages

Based on the "Framework Components" category

Do you think we are missing an alternative of scrivener_headers or a related project?

Add another 'Framework Components' Package

README

Scrivener.Headers

Build Status Hex Version Hex docs License

Helpers for paginating API responses with Scrivener and HTTP headers. Implements RFC-5988, the proposed standard for Web linking.

Setup

Add to mix.exs:

  defp deps do
    [
      # ...
      {:scrivener_headers, "~> 3.1"}
      # ...
    ]
  end

Usage

With paginate/2 we can easily set our pagination headers:

def index(conn, params) do
  page = MyApp.Person
         |> where([p], p.age > 30)
         |> order_by([p], desc: p.age)
         |> preload(:friends)
         |> MyApp.Repo.paginate(params)

  conn
  |> Scrivener.Headers.paginate(page)
  |> render("index.json", people: page.entries)
end

With curl --include we can see our new headers:

$ curl --include 'https://localhost:4000/people?page=5'
HTTP/1.1 200 OK
Link: <http://localhost:4000/people?page=1>; rel="first",
  <http://localhost:4000/people?page=30>; rel="last",
  <http://localhost:4000/people?page=6>; rel="next",
  <http://localhost:4000/people?page=4>; rel="prev"
Total: 300
Per-Page: 10

Contributing

Contributions of all types are welcomed and encouraged. Please make appropriate use of Issues and Pull Requests. All code should have test coverage.

License

MIT license. Please see LICENSE for details.


*Note that all licence references and agreements mentioned in the scrivener_headers README section above are relevant to that project's source code only.