Hello!
I have created an api application with phoenix 1.7.2 . I have to change the root path for the application because it is located behind a reverse proxy. To achieve this I made the following changes:
In the config.exs
I change the Endpoint configuration by adding the path
config :my_app, MyAppWeb.Endpoint,
url: [host: "localhost", path: "/v2"]
Then I configure static resources by changing the plug
in endpoint.ex
plug Plug.Static,
at: "/v2",
from: :my_app,
gzip: false,
only: MyAppWeb.static_paths()
(Even though it is a api webservice, it has a static page if you access it in a browser)
Finally I added a scope
to the router.ex
scope "/v2" do
scope "/", MyAppWeb do
pipe_through :browser
get "/", PageController, :home
end
scope "/api", MyAppWeb do
pipe_through :api
post "/stuff", StuffController, :post
get "/stuff", StuffController, :get
end
end
This works but when I try to write tests for this configuration, I get lots of verified-routes warning. My issues is, when I use the route like ~p"/api/stuff"
the tests execute successfully but produce warnings link warning: no route path for MyApp.Router matches "/api/stuff"
. When I change the url to incorporate the different root ~p"/v2/api/stuff"
, the warning is gone but it doesn’t work anymore because the p sigil is resolved to /v2/v2/license/activate
.
I’m sure I am just missing some configuration somewhere but I cant figure out where.
Thanks for your help!