I have a users
resource in my router with an extra endpoint for friends like so:
resources "/users", UserController, except: [:create, :delete] do
get "/friends", UserController, :friends
end
This works, but my friends route is /api/users/:user_id/friends
. How can I rename the parameter to id
so my route instead becomes /api/users/:id/friends
?
I don't think it is possible to change when nesting resources because the nested resources are likely to have their entities with :id
parameter so the resources
macro is automatically prefixing the parents with their names, hence :user_id
You should be able to achieve what you want by using scope
instead of nested resources:
resources "/users", UserController, except: [:create, :delete]
scope "/users/:id" do
get "/friends", UserController, :friends
end
$ mix phx.routes
GET /api/users UserController :index
GET /api/users/:id UserController :show
PATCH /api/users/:id UserController :update
PUT /api/users/:id UserController :update
GET /api/users/:id/friends UserController :friends