【问题标题】:How to change request url structure in activeresource ruby gem如何在 activeresource ruby​​ gem 中更改请求 url 结构
【发布时间】: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


【解决方案1】:

使用这些模型:

 class User < ActiveResource::Base 
   self.site = "http://localhost:3001/api/v1"
   has_many :services
 end

 class Service < ActiveResource::Base
   self.site = "http://localhost:3001/api/v1"
   belongs_to :user 
 end

ActiveResource 应按如下方式发出请求:

user = User.find(1)      # GET http://localhost:3001/api/v1/users/1.json
services = user.services # GET http://localhost:3001/api/v1/users/1/services.json

假设您将在 ActiveResource 中有更多选项,您也可以考虑使用类似的东西:

 class Resource < ActiveResource::Base 
   self.site = "http://localhost:3001/api/v1"
 end

 class User < Resource 
   has_many :services
 end

 class Service < Resource
   belongs_to :user 
 end

【讨论】:

    猜你喜欢
    • 2016-07-12
    • 2015-09-15
    • 2011-07-28
    • 2021-01-15
    • 1970-01-01
    • 2016-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多