使用 Rails 连接到 Web 服务(HTTP 请求)?

2024-03-08

我正在使用 Ruby on Rails 3,并尝试实现 API 以从 Web 服务检索帐户信息。也就是说,我想连接到具有 Account 类的 Web 服务并从show在 URI 处路由的操作http://<site_name>/accounts/1.

此时,在web服务中accounts_controller.rb我有的文件:

class AccountsController < ApplicationController
  def show
    @account = Account.find(params[:id])

    respond_to do |format|
      format.html
      format.js
      format.json { render :json => @account.to_json }
    end
  end
end

现在我需要一些关于连接到网络服务的建议。在客户端应用程序中,我应该有一个 HTTP GET 请求,但我的问题是:连接到发出 HTTP 请求的 Web 服务的“最佳”方法是什么?

客户端应用程序中的此代码有效:

url = URI.parse('http://<site_name>/accounts/1.json')
req = Net::HTTP::Get.new(url.path)
res = Net::HTTP.start(url.host, url.port) {|http|
  http.request(req)
}

@output = JSON(res.body)["account"]

但是,上面的代码是实现 API 的“方式”吗?

是否建议使用第三方插件和 gems?


是的,既然你正在使用RESTful http://en.wikipedia.org/wiki/Representational_State_Transfer#RESTful_web_services路线,它们是你的基本 API。您还返回可由应用程序轻松使用的结构化 JSON 数据。

还有其他方法可以实现 Web 服务 API(例如SOAP http://en.wikipedia.org/wiki/SOAP),但这是一个好的、正确的方法。

由于它是一个 Web 服务 API,因此连接到正确的 URL 并解析响应是客户端的方法。不过,如果您需要访问许多不同的资源,那么创建一种灵活的方式来构建请求 URL 可能是个好主意。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Rails 连接到 Web 服务(HTTP 请求)? 的相关文章

  • RailsAdmin 中具有 join_table 和 has_many :through 的模型的路由错误

    所以我有3个模型 category product category products 这是我的category rb attr accessible name has many category products do def with
  • Bundle exec rspec VS rspec 规范

    红宝石 1 9 2 导轨 3 1 这是问题所在bundle exec rspec spec 不起作用 但是rspec spec 运行正常 当我跑步时c RailsInstaller work apptwit gt bundle exec r
  • 启动同一作业的多个延迟作业进程

    我在运行多个工作人员的设置中使用延迟作业 就我的问题而言 这并不重要 但假设我运行 10 个工作线程 当前在开发模式下执行此操作 我遇到的问题是两个不同的工作人员有时开始处理同一项工作 调用我的工作对象上的执行方法 据我所知 延迟作业正在使
  • ruby中如何将binary32转换为float

    我有一个以 IEEE 32 编码的 binary32 如何将 0x0040EDC2 转换为 118 625 我尝试了几种打包和解包选项 但没有成功 IEEE http en wikipedia org wiki Single precisi
  • 如果使用 jQuery 添加字段,Rails 嵌套表单属性不会保存

    我有一个带有嵌套表单的 Rails 表单 我使用 Ryan Bates 嵌套表单和 jquery 教程 并且就动态添加新字段而言 它工作得很好 但是当我提交表单时 它不会保存任何关联的属性 但是 如果在表单加载时构建部分 则它会很好地创建属
  • 捆绑包安装无法离线工作

    我得到了这个问题 我想已经安装了捆绑器 因为我无法在 RoR 中创建应用程序时捆绑安装 也无法直接在项目中捆绑安装 如果您遇到任何问题并找到解决方案 请帮助我 enter code here run bundle install Fetch
  • 通过 SO_RCVTIMEO 套接字选项在 Ruby 中设置套接字超时

    我试图通过 SO RCVTIMEO 套接字选项在 Ruby 中设置套接字超时 但它似乎对任何最近的 nix 操作系统都没有影响 使用 Ruby 的 Timeout 模块不是一个选择 因为它需要为每个超时生成和连接线程 这可能会变得昂贵 在需
  • Rails 递归地包含 javascripts 资源文件夹

    我了解如何将一个 JavaScript 文件添加到 Rails 资产管道中 只需添加 require filename 到 application js 但是如何在一个文件夹下包含多个 javascript 文件 vendor assets
  • 用于 S3 私有文件的 ActiveStorage

    到目前为止 我一直在使用 Paperclip 将一些文件上传到 S3 其中一些文件不是公开的 Paperclip 允许通过以下位将一些文件作为私有文件上传 has attached file image styles large 2000x
  • 正常关闭 sidekiq 进程

    有谁知道如何找到 sidekiq 的 pidfile 来优雅地关闭它 跑步ps ax grep sidekiq然后运行sidekiqctl stop
  • 由于 MIME 类型不受支持,拒绝应用样式

    我不断收到一条错误消息 指出 MIME 类型 text html 不可执行或不是受支持的样式表 MIME 类型 并且启用了严格的 MIME 检查 我的链接代码是
  • 用于获取下周一(或一周中的任何一天)的日期的 Ruby 代码

    给定一个输入 例如 day Monday 我如何计算下一次的日期day def date of next day end require date def date of next day date Date parse day delta
  • 自动加载常量时检测到循环依赖

    我将 Rails 从版本 3 1 2 运行良好 升级到 4 0 并遇到以下错误 circular dependency detected while autoloading constant Foo 我创建了一个类ProductFactor
  • 更改 Active Storage 的默认 URL

    我们可以更改从活动存储创建的默认 永久 url 以重定向到 S3 类似于rails active storage representations 我不喜欢网址中的框架名称 Thanks UPDATE 最近 Rails 6 中增加了一个可配置
  • <%=h ... %> 在 Rails 中意味着什么?

    I found here http api rubyonrails org classes ActionView Helpers RecordTagHelper html以下语法 什么是h means 它用于转义标签的输出以避免跨站点脚本
  • 从数组中删除空白元素

    当我从 ruby on Rails 表单中保存多个选择时 它似乎在前面添加了一个空白元素 我该如何删除它 该字段为 selected player utf8 gt authenticity token gt H8W7qPBezubyeU0a
  • 通过Python连接到Bigquery:ProjectId和DatasetId必须非空

    我编写了以下脚本来通过 SDK 将 Big Query 连接到 Python 如下所示 from google cloud import bigquery client bigquery Client project My First Pr
  • 子域中的 Rails url 助手 - 删除子域

    我网站上的用户可以拥有子域 例如 他们的页面网址是 name example com 登录的用户可以查看更多用户信息 因此在用户的显示页面上 我有一个使用以下代码生成的链接 user url user subdomain gt false
  • Rails:Passenger Standalone 适合生产部署吗?

    问题标题几乎概括了这一点 我找不到任何好的资源来概述使用 Phusion Passenger Standalone 进行 Rails 应用程序部署的优点 缺点 它与运行 Passenger Nginx 或 Passenger Apache
  • 如何让 Sidekiq 在 Heroku 上运行?

    这是我第一次尝试让 Redis 在 Heroku 上运行 我添加了一个工作dyno 就在今天 所以还没有付款 添加了RedisToGo Nano附加组件 在我的本地机器上测试了后台作业 并将应用程序推送到heroku heroku ps g

随机推荐

  • 如何在画布上制作自定义可编辑文本框,背景随文本一起传播?

    我没有在flutter中使用过canvas 但我认为像图像中的编辑文本框可以通过canvas来实现 背景随着文本长度而扩展 如果一行中的文本长度为 0 则没有背景 如果您有任何代码或建议可以这样做 请提供帮助 这里是代码 class Tex
  • 由 Peer pymongo 重置连接

    我有一些文档 我必须从 mongodb 获取并将其设置到 memcache 这是代码 import memcache from pymongo import MongoClient db mongo client job db JobPar
  • 如何在训练自动编码器(回调)期间将keras中的输入随机设置为零?

    我正在联合训练具有 2 个独立输入路径的 2 个自动编码器 并且我想将其中一个输入路径随机设置为零 我将 Tensorflow 与 keras 后端 功能 API 一起使用 我正在计算反向传播的联合损失 两个损失的总和 A gt A B g
  • 重新排序数组时如何用 Angular-Animate 触发 ng-move?

    使用角度1 2 4 我试图弄清楚当重复的项目重新排序时如何触发 ng animate 的移动 我知道 ng animate 正在工作 因为进入 离开和移动的动画都是在应用过滤器时触发的 但是 当我使用某些数组方法对数组重新排序时 不会触发任
  • 从 ng-repeat [duplicate] 中删除重复项

    这个问题在这里已经有答案了 我有一个非常简单的数组 其中有重复的值 我的数组是这样的 scope type Bar Pie Line Line Line Line Line Line map Line Bar Pie Pie Pie Pie
  • Android 无法将 FAB 按钮锚定到 BottomSheet

    我正在尝试将 FAB 按钮附加到 BottomSheet 视图 就像 Google 地图一样 然而我无法让它发挥作用 这是 FAB 按钮的代码
  • 如何使用 colorbox 在页面上显示隐藏的 div 而无需进行硬编码?

    我正在使用 Colorbox 在我的页面上显示隐藏 div 的 html 内容 我可以让它与以下内容完美配合 a colorbox colorbox width 600px inline true href 344 这将显示 ID 为 34
  • C 结构大小不一致[重复]

    这个问题在这里已经有答案了 可能的重复 如何找到结构体的大小 https stackoverflow com questions 143025 how do i find the size of a struct 结构体的内存大小不同 ht
  • 比较不同数组的范围值

    我正在尝试将 arr3 的范围值与 arr4 的范围值进行比较 但我没有得到所需的输出 请建议我修改以下代码以获得输出 3 4 5 6 7 9 10 11 12 14 15 不重复值 例如5和10 并且总匹配 11 my arr3 1 5
  • 为什么不继承List

    在计划我的计划时 我经常从这样的一系列思考开始 足球队只是足球运动员的名单 因此 我应该用 var football team new List
  • Chrome 开发者工具:如何禁用代码自动完成?

    我正在源面板中尝试使用 Chrome DevTool 漂亮的 Workspaces in devtools 代码编辑器 其设置大致类似于此处接受的答案 Chrome 开发者工具 在单独的视图 垂直平铺中查看控制台和源视图 https sta
  • Mysql 查询运行速度更快

    表结构 CREATE TABLE IF NOT EXISTS logs id bigint 20 unsigned NOT NULL AUTO INCREMENT user bigint 20 unsigned NOT NULL type
  • 如何捕获 Android 上的应用流量

    我正在尝试从 Android 手机上的应用程序捕获流量 尽管我已在手机上设置代理并且可以捕获来自手机的所有其他互联网流量 使用 Charles 代理 但我看不到任何流量这一个应用程序 这是如何完成的以及如何捕获流量 UPDATE 如果您需要
  • 将 UTC 时间戳转换为任何其他区域时间戳

    我正在使用 MongoDB 来存储我的数据 Mongo 默认以 UTC 格式存储时间戳 我们在不同时区处理数据 我正在努力将 UTC 时间戳转换为 PDT 或 IST 时间戳 尝试构造一个方法来传递时区 我的时间戳将转换为其中 和时间戳 U
  • 用户配置文件的布局不适用于 asp.net core 3.0

    在 Asp core 3 0 上 当用户单击其个人资料 Areas Identity Pages Account Manage layout cshtml 时 我的布局页面无法正常工作 当我登录后单击默认电子邮件时 我会看到 Manage
  • 重置 R 实例

    是否可以重置 R 实例 例如 如果我使用了命令 x lt 1 10 plot x x 从而用 x 变量污染了系统 在这种状态下 我可以在不关闭 R 并再次启动它的情况下恢复到干净状态吗 您可以使用以下命令从工作区中删除所有变量 rm lis
  • protobuf-net 不比二进制序列化快吗?

    我编写了一个程序 使用 XMLSerializer BinaryFormatter 和 ProtoBuf 序列化 Person 类 我认为 protobuf net 应该比其他两个更快 Protobuf 序列化比 XMLSerializat
  • MVC 4 中的防伪 cookie 令牌和表单字段令牌不匹配

    我在 ASP NET MVC 4 中使用默认登录模块 我没有更改默认应用程序中的任何代码 并将其托管在共享服务器上 我使用默认登录页面登录后 我让浏览器闲置了一段时间 然后 当我尝试执行任何控制器操作时 显然应用程序会重定向到登录页面 Au
  • Python Matplotlib - 未对齐的网格线和颜色填充

    我使用以下代码来生成一种二进制热图 import numpy as np import matplotlib colors as mlc import matplotlib pyplot as mlp states AAAA BBBB CC
  • 使用 Rails 连接到 Web 服务(HTTP 请求)?

    我正在使用 Ruby on Rails 3 并尝试实现 API 以从 Web 服务检索帐户信息 也就是说 我想连接到具有 Account 类的 Web 服务并从show在 URI 处路由的操作http