vt-elixir / ja_serializer

JSONAPI.org Serialization in Elixir.
Other
640 stars 148 forks source link

Remove PhoenixView in favor of documenting how to integrate. #164

Open alanpeabody opened 8 years ago

alanpeabody commented 8 years ago

This is in the spirit of explicit over implicit.

Suggested by @nurugger07 in #34.

All view really needs is:

defmodule Example.PostView do
  use Example.Web, :view
  use JaSerializer

  def render(action, %{data: data, conn: conn} = args) when action in ["index.json-api", "show.json-api"] do
    JaSerializer.format(__MODULE__, data, conn, args[:opts] || [])
  end

  attributes [:title, :body]
end

Something would also need to be added to the changeset and error views.

nmcalabroso commented 7 years ago

Agree to this. I understand how we want to have a plugin that works out of the box. However, explicitly for View, I don't think we need the implicit contextual PhoenixView especially that we will most likely customize the rendering of our data.

This would also allow the project to move independent of framework but only by Plugs.

alanpeabody commented 7 years ago

I would love to see a PR to the docs/README overhauling and documenting how to use this lib with Phoenix w/o the phoenix view. Once we have that we can deprecate PhoenixView for removal in a (hopefully) soon to come 1.0 release.

pinx commented 7 years ago

You also need to explicitly handle render :errors. I am quite happy with the PhoenixView.

oskarrough commented 7 years ago

From the perspective of an Elixir beginner, I'm really happy with PhoenixView and anything it can provide to reduce the amount of boilerplate.

darkbaby123 commented 7 years ago

I think removing PhoenixView is a good idea. Recently we want to do I18n for JSON API errors, and we have to build our own EctoErrorSerializer to integrate Gettext. It's actually not hard but lead me to think if we really need the helpers PhoenixView provides. Most of time Serializer.format is enough.

Maybe moving Phoenix integration to another lib like ja-serializer-phoenix is better. People can still use it for seamlessly integration.

I'm also glad to PR a config to use custom Ecto error serializer (maybe even a common behaviour), but if PhoenixView is removed, I think the config will not be necessary.

alanpeabody commented 7 years ago

I think a ja-serializer-phoenix lib is a good idea. :+1: