【发布时间】:2015-11-08 14:06:11
【问题描述】:
ActiveResource 中是否有配置选项可用于更改请求 url 结构
例如,当我的客户端应用程序尝试从 api 访问特定用户的服务时,ActiveResource 以以下结构向 api url 发送请求
http://localhost:3000/api/v1/services.json?user_id=1
但我希望 ActiveResource 像这样向 api url 发送请求
http://localhost:3000/api/v1/users/1/services
这是我在客户端 Rails 应用程序中使用的两个模型文件
用户.rb
class User < ActiveResource::Base
self.site = "http://localhost:3001/api/v1"
has_many :services
end
服务.rb
class Service < ActiveResource::Base
self.site = "http://localhost:3001/api/v1"
belongs_to :user
end
任何帮助,将不胜感激。谢谢
【问题讨论】:
-
你对两个模型使用相同的 url,第二个不应该不同吗?正确的 url 由接收服务器定义,即您定义的路由
-
@peter 感谢您的回复,我不知道你们的“第二个不一样”是什么意思,为什么因为
self.site是我们用来分配基本 api 的属性url,这不需要不同,我使用的是单个 api,所以第二个不需要不同。 -
那么,您的服务器如何知道您针对用户或服务提出的请求?我认为您至少需要 2 条路线才能同时为它们提供服务,但是,嘿,我没有使用 ActiveResouce 的经验,所以我可能是错的
-
@peter 是的,正确的 URL 由接收服务器定义,接收服务器 URL 格式是
http://localhost:3000/api/v1/users/1/services,当我尝试访问关系子记录时,活动源正在向 api 发送请求这个结构http://localhost:3000/api/v1/services.json?user_id=1,这就是为什么我要更改活动源请求 URL 结构。 -
无论如何感谢您的尝试@peter
标签: ruby-on-rails ruby api rest activeresource