View Source JSONAPIPlug.Normalizer behaviour (jsonapi_plug v1.0.1)

Transforms user data to and from a JSON:API Document.

The default implementation transforms JSON:APIdocuments in requests to an ecto friendly format and expects Ecto.Schema instances when rendering data in responses. The data it produces is stored under the :params key of the JSONAPIPlug struct that will be stored in the Plug.Conn private assign :jsonapi_plug.

You can customize normalization to convert your application data to and from the JSONAPIPlug.Document data structure by providing an implementation of the JSONAPIPlug.Normalizer behaviour.

defmodule MyApp.API.Normalizer
  ...

  @behaviour JSONAPIPlug.Normalizer

  ...
end

and by configuring it in your api configuration:

config :my_app, MyApp.API, normalizer: MyApp.API.Normalizer

You can return an error during parsing by raising JSONAPIPlug.Exceptions.InvalidDocument at any point in your normalizer code.

Link to this section Summary

Functions

Transforms a JSON:API Document user data

Transforms user data into a JSON:API Document

Link to this section Types

Link to this section Callbacks

Link to this callback

denormalize_attribute(params, field_name, term)

View Source
@callback denormalize_attribute(
  params(),
  JSONAPIPlug.Resource.field_name(),
  term()
) :: params() | no_return()
Link to this callback

denormalize_relationship(params, arg2, field_name, term)

View Source
Link to this callback

normalize_attribute(params, field_name)

View Source
@callback normalize_attribute(params(), JSONAPIPlug.Resource.field_name()) ::
  value() | no_return()
@callback resource_params() :: params() | no_return()

Link to this section Functions

Link to this function

denormalize(document, resource, conn)

View Source

Transforms a JSON:API Document user data

Link to this function

normalize(resource, conn, data, meta, options)

View Source

Transforms user data into a JSON:API Document