hubertlepicki

hubertlepicki

Setting up Absinthe on Phoenix + Bandit project

I am trying to set up Absinthe following the documentation here: Plug and Phoenix Setup — absinthe v1.11.0

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?

Marked As Solved

hubertlepicki

hubertlepicki

OK I generated the app again and did the set up steps and everything is working. I think I may have either generated app that’s too bare bones to work with Absinthe or made some other error along the way. It works now.

Also Liked

hubertlepicki

hubertlepicki

I deleted the previous app and it was never in the repo. I’m sorry :frowning:

stevensonmt

stevensonmt

How did you make the requests?

I’ve noticed sometimes that recompiling in an iex session (started with iex -S mix) is not effective. Have to end that session and start a new one for changes to be applied.

Last Post!

stevensonmt

stevensonmt

How did you make the requests?

I’ve noticed sometimes that recompiling in an iex session (started with iex -S mix) is not effective. Have to end that session and start a new one for changes to be applied.

Where Next?

Popular in Questions Top

hariharasudhan94
Lets say I have map like this fetching from my database %{"_id" => #BSON.ObjectId<58eb1a7a9ad169198c3dXXXX>, "email" => ...
New
lastday4you
I wanted to check elixir version in phoenix because i found that my elixir is 1.5 but when i use Enum.chunk_by it said the function is un...
New
ashish173
I am using Ecto timestamps with postgres, I can see the timestamps() use the :naive_dateime but for my use case I wanted to store the ti...
New
joeerl
Hello again - after a longish gap I’ve decided I really must dig into Elixir and see what’s been happening here - so I have a few questio...
New
sen
Hi All, I set a environment variables in dev.exs , like below code. when i start server, how can i set the ${enable} value? thanks. d...
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New
pmjoe
I have a relationship of love and hate with Elixir. Lots of things are just absolutely right, but there are some things that are kind of ...
New

Other popular topics Top

minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
vonH
In asking this question I am more interested about the expressiveness of the language itself and less concerned about the availability of...
New
aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
sorentwo
Hello! tl;dr Announcing Oban, an Ecto based job processing library with a focus on reliability and historical observability. After spen...
985 44532 311
New
WestKeys
Currently suffering from paralysis by [HTTP client] analysis. This is rather unusual in Elixirland as there tends to be consensus on the ...
New
sergio
Kind of like when jquery came out, it was super necessary. Existing drag and drop libraries have a bunch of baggage to support old browse...
New

We're in Beta

About us Mission Statement