I am trying to set up Absinthe following the documentation here: Plug and Phoenix Setup — absinthe v1.7.8
on a brand new Phoenix 1.7 project.
I have generated the project with:
mix phx.new api --no-assets --no-ecto --no-dashboard --no-mailer --no-html --no-live --no-gettext --module=API
and now I try to add Absinthe. I installed dependencies:
defp deps do
[
{:phoenix, "~> 1.7.20"},
{:telemetry_metrics, "~> 1.0"},
{:telemetry_poller, "~> 1.0"},
{:jason, "~> 1.2"},
{:dns_cluster, "~> 0.1.1"},
{:bandit, "~> 1.5"},
{:absinthe_plug, "~> 1.5"}
]
end
And I configured my router:
defmodule APIWeb.Router do
use APIWeb, :router
forward "/api/graphql", Absinthe.Plug,
schema: API.Schema
forward "/api/graphiql",
Absinthe.Plug.GraphiQL,
schema: API.Schema,
interface: :simple
end
The app compiles but when I make requests to either /api/graphq or /api/graphiql I am getting:
[info] GET /api/graphiql
[error] ** (Plug.Conn.NotSentError) a response was neither set nor sent from the connection
(bandit 1.6.7) lib/bandit/pipeline.ex:172: Bandit.Pipeline.commit_response!/1
(bandit 1.6.7) lib/bandit/pipeline.ex:44: Bandit.Pipeline.run/4
(bandit 1.6.7) lib/bandit/http1/handler.ex:12: Bandit.HTTP1.Handler.handle_data/3
(bandit 1.6.7) lib/bandit/delegating_handler.ex:18: Bandit.DelegatingHandler.handle_data/3
(bandit 1.6.7) lib/bandit/delegating_handler.ex:8: Bandit.DelegatingHandler.handle_continue/2
(stdlib 6.0.1) gen_server.erl:2163: :gen_server.try_handle_continue/3
(stdlib 6.0.1) gen_server.erl:2072: :gen_server.loop/7
(stdlib 6.0.1) proc_lib.erl:329: :proc_lib.init_p_do_apply/3
My schema so far is also generated from documentation:
defmodule API.Schema do
use Absinthe.Schema
@desc "An item"
object :item do
field(:id, :id)
field(:name, :string)
end
# Example data
@items %{
"foo" => %{id: "foo", name: "Foo"},
"bar" => %{id: "bar", name: "Bar"}
}
query do
field :item, :item do
arg(:id, non_null(:id))
resolve(fn %{id: item_id}, _ ->
{:ok, @items[item_id]}
end)
end
end
end
Anyone knows what I’m doing wrong?