Home

Awesome

PhoenixRest

Build Status Hex Version

Resource routing and REST behaviour for Phoenix web applications.

PhoenixRest integrates the PlugRest library into your Phoenix application by making a new resource macro available in the existing router.

Instead of writing a Phoenix Controller and implementing an action function for each HTTP verb and path, use this library to create a Resource and define one or more optional callbacks that describe your resource's RESTful behavior.

Documentation for PhoenixRest is available on hexdocs.<br/> Source code is available on Github.<br/> Package is available on hex.

Hello World

Let's assume you've created a new Phoenix site with mix phx.new hello.

Add a new route to your router.ex to match a path with a resource handler:

defmodule HelloWeb.Router do
  use HelloWeb, :router

  resource "/hello", HelloWeb.HelloResource
end

Create a resource at lib/hello_web/resources/hello_resource.ex defining the resource handler, and implement the optional callbacks:

defmodule HelloWeb.HelloResource do
  use PhoenixRest.Resource

  def to_html(conn, state) do
    {"Hello world!", conn, state}
  end
end

The docs for PhoenixRest.Resource list all of the supported REST callbacks and their default values.

Installation

Add PhoenixRest to your Phoenix project:

  1. Add :phoenix_rest to your list of dependencies in mix.exs:
```elixir
defp deps do
  [
    {:phoenix_rest, "~> 0.7"}
  ]
end
```

2. Edit hello_web.ex and add PhoenixRest.Router:

```elixir
def router do
  quote do
    use Phoenix.Router
    use PhoenixRest.Router

    import Plug.Conn
    import Phoenix.Controller
  end
end
```

Tasks

You can generate a new PhoenixRest resource (with all of the callbacks implemented) by using a Mix task:

mix phx_rest.gen.resource HelloResource

Upgrading

PhoenixRest is still in an initial development phase. Expect breaking changes at least in each minor version.

See the CHANGELOG for more information.

License

PhoenixRest copyright © 2016, Christopher Adams