如何将Phoenix成员路由中的user_id参数重命名为id?
Phoenix路由:将嵌套端点参数从:user_id改为:id
你可以通过两种方式实现需求,把/api/users/:user_id/friends的参数名改为:id:
方法一:单独定义friends路由(推荐)
直接拆分嵌套路由,单独指定带:id参数的路径,同时保留原有的users资源路由:
# 保留原有users资源路由 resources "/users", UserController, except: [:create, :delete] # 单独定义friends路由,参数指定为id get "/users/:id/friends", UserController, :friends
这样生成的路径就是/api/users/:id/friends,请求时参数会以:id的形式传递到UserController.friends/2中。
方法二:使用scope手动指定参数名
如果希望保持路由的结构关联性,可以用scope包裹friends路由,手动设置父路径的参数为:id:
resources "/users", UserController, except: [:create, :delete] scope "/users/:id" do get "/friends", UserController, :friends end
两种方法都能满足你的需求,方法一更简洁直接,适合这类简单的额外端点场景。
内容的提问来源于stack exchange,提问作者Alex Moreira
相关产品推荐
相关产品推荐

