Hi! I want to receive GET request with JSON body.
#router
...
pipeline :api do
plug :accepts, ["json"]
end
scope "/", PsRbkWeb do
pipe_through :api
get "/order", PaymentController, :index
end
...
# controller
...
def index(conn, _some_params) do
IO.inspect(conn) # empty body_params: %{} in conn
end
...
After I made GET request to “/order” with some json in body (with header Content-Type=application/json
). - have empty body_params: %{}
in conn
in my controller.
Here is resulting conn, sorry for length:
%Plug.Conn{
adapter: {Plug.Cowboy.Conn, :...},
assigns: %{},
before_send: [#Function<1.112466771/1 in Plug.Logger.call/2>,
#Function<0.66982185/1 in Phoenix.LiveReloader.before_send_inject_reloader/2>],
body_params: %{},
cookies: %Plug.Conn.Unfetched{aspect: :cookies},
halted: false,
host: "localhost",
method: "GET",
owner: #PID<0.596.0>,
params: %{},
path_info: ["order"],
path_params: %{},
port: 4000,
private: %{
PsRbkWeb.Router => {[], %{}},
:phoenix_action => :index,
:phoenix_controller => PsRbkWeb.PaymentController,
:phoenix_endpoint => PsRbkWeb.Endpoint,
:phoenix_format => "json",
:phoenix_layout => {PsRbkWeb.LayoutView, :app},
:phoenix_pipelines => [:api],
:phoenix_router => PsRbkWeb.Router,
:phoenix_view => PsRbkWeb.PaymentView,
:plug_session_fetch => #Function<1.58261320/1 in Plug.Session.fetch_session/1>
},
query_params: %{},
query_string: "",
remote_ip: {127, 0, 0, 1},
req_cookies: %Plug.Conn.Unfetched{aspect: :cookies},
req_headers: [
{"accept", "*/*"},
{"accept-charset", "UTF-8"},
{"accept-encoding", "gzip, deflate"},
{"cache-control", "no-cache"},
{"connection", "keep-alive"},
{"content-length", "353"},
{"content-type", "application/json"},
{"host", "localhost:4000"},
{"postman-token", "70bc9e11-1ef4-493d-a556-cf4876d28bc2"},
{"user-agent", "PostmanRuntime/7.4.0"}
],
request_path: "/order",
resp_body: nil,
resp_cookies: %{},
resp_headers: [
{"cache-control", "max-age=0, private, must-revalidate"},
{"x-request-id", "2lonnum7h1c48rmudk000gu1"}
],
scheme: :http,
script_name: [],
secret_key_base: :...,
state: :unset,
status: nil
}
So, the question is: Is it possible to receive any json data in GET request body and access it form controller? (Or I have to give up and use POST with JSON body). Please, guide me to the right direction.