问题标签 [rails-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
245 浏览

ruby-on-rails - Rails + rails-api:使用 Helper 的循环依赖

我在 helpers api_helper 文件夹中有一个模块 ApiHelper ,这引起了一些混乱。在 controllers/api/v1 我有两个控制器,它们都有

确切的错误是:

我认为这个问题正在发生,因为我有一个使用 rails-api 像这样设置的 api_controller:

我的普通应用程序控制器是这样设置的

api 控制器继承自 ApiController,而我的普通 App 控制器继承自 ApplicationController。

或者它可能更简单;想法?

0 投票
1 回答
281 浏览

ruby-on-rails - 使 Rails 中的记录过期

我的 Rails 应用中有 ApiKey 记录。它有一个 expires_at 日期时间列。

我正在尝试使用此回调使其过期:

但是,我第一次尝试查找过期的 ApiKey 时,它仍然返回密钥。只有当我再次调用 find 时,它才会 raise RecordNotFound

这是有问题的,因为我不能让过期的 ApiKeys 工作。

0 投票
0 回答
401 浏览

ruby-on-rails - 在门卫中的某些操作上验证客户端应用程序而不是 access_token?

我正在使用 Rails JSON API + Doorkeeper,所以我想让具有 client_id 和 client_secrete 的移动应用程序请求 POST /users 来创建用户,而无需使用访问令牌进行验证。目前,我直接在 Rails 控制台中创建用户,移动应用程序使用使用资源所有者密码凭据流来获取令牌以通过 API 访问受保护的资源。在下面的代码中,移动应用程序必须提供访问令牌才能调用索引操作:

目前,创建操作不会验证任何内容,所以无论如何要告诉 door_keeper 在允许调用特定操作之前验证 client_id 和 client_secret 吗?我不希望它公开。

0 投票
1 回答
603 浏览

ruby-on-rails - 为 rails-api root 提供 403 错误

我正在使用 rails-api 创建移动 api,当用户转到 api 的 url 时,我得到了预期的“欢迎登机”页面。如果用户尝试使用网络浏览器访问根 url,我想要做的是删除它并只给用户一个 403 页面(或 404)。

我知道我可以创建一个控制器(error_pages),然后将它与routes.rb中的一个方法(no_access)进行匹配,然后在views目录中有一个默认呈现的页面。

我假设有一种更简单的方法可以使用 Rails 魔法来实现这一点。

编辑:

我发现这篇 SO 文章:

我的应用程序中默认的“欢迎登机”页面在哪里?

它指出从 Rails 4 开始,index.html 不再位于 public/ 目录中,因为它包含在 gem 中。

是否可以在 routes.rb 文件中仅指向公共目录中的错误页面之一?

我尝试了以下方法,但它不起作用:

根“公共/404.html”

我不想创建一个控制器来指向一个错误页面,有没有更好的 rails 方式?

0 投票
1 回答
1777 浏览

ruby-on-rails - 对 Rails 4 API 的 POST 请求的空参数

我刚开始在 Rails 中编码以创建 API,但我已经碰壁了。我正在尝试使用 POST 请求创建用户。这是我的用户控制器,它是使用脚手架命令创建的:

结尾

用户模型只有一个验证validates :name, presence: true并且一直失败,因为显然参数总是空的。为了测试我在 Chrome 上使用 Postman - REST Client 的调用,我点击的 URL 是http://localhost:3000/users. 我不确定我做错了什么。与表单和 http 相同的设置可以正常工作。

我尝试以不同的方式格式化 JSON 对象,但没有任何效果。到目前为止,我使用过:

  1. {“用户”:{“名称”:“测试”}}
  2. {{“名称”:“测试”}}
0 投票
0 回答
520 浏览

ruby-on-rails-4 - 使用 Doorkeeper/Bcrypt for Rails API 正确登录

我有一个使用 rails 4 创建的 API,目前我正在尝试弄清楚如何进行登录。由于 API 将用于 iPhone 应用程序,我们决定使用令牌身份验证和 Doorkeeper/OAuth2 gem。

到目前为止,我创建了一个登录控制器来负责对用户进行身份验证(我正在使用 bcrypt 来散列密码)。

我在上面的代码中遇到的问题是法拉第超时。问题在于 access_token 调用。由于向 /signin 发出了 POST 请求,第二个请求 (access_token) 将发送到 Doorkeeper 进行身份验证,因此必须等到第一个请求完成。

我不确定我是否过度复杂化了该过程,但我想要实现的是从前端发出请求,对用户进行身份验证并将令牌返回到前端以供将来使用。

我尝试的另一种方法是 POST 到 /oauth/token :

{ "grant_type" : "password", "username" : "test@gmail.com", "password" : "$2a$10$igmaaZkrSviHc.8Glm3hcuRdqzeT5YQwYaKFN9eUbpfcmCqA3PBiO", "client_id" : "f5cbc8d91f6e007c003e17baf3f45cb83cede4313c381afa99e456f59b08e3f8", "client_secret" : "f827f84548b33ebd8042cfbaa7aff944f5844aad7962623ed68d83963bc62bb5" }

这种方法工作正常,但密码已经散列,当我尝试使用

在 doorkeeper.rb 中,我收到一个关于 BCrypt 的错误(我确实尝试过“require 'bcrypt'”)。

任何建议都会受到欢迎。

0 投票
1 回答
2154 浏览

ruby-on-rails - 测试 401 错误但未找到记录时,Rspec 挂起

我正在运行 Rails-api 的 Rails 4 API 上使用 RSpec 运行集成测试。我想看看如果错误的电子邮件地址被传递给登录控制器,我会收到 401 回复。

这是我的期望

在我的控制器中,我有:

这在浏览器中运行良好,我得到了 401。但是当我运行 rspec 时,它只会挂起并且永远不会报告失败或通过,只是坐在那里没有错误。问题的症结似乎是 if(@user) 部分。如果我删除它,那么测试至少会运行。

我检查了 log/test.log,我可以在日志中看到Completed 401 Unauthorized in 14ms (Views: 0.2ms | ActiveRecord: 2.8ms)

更新

澄清一下,这是一个request spec. 我正在测试 API 的使用者在无效电子邮件的情况下会收到 401 响应。

0 投票
2 回答
185 浏览

ruby-on-rails - rails-api testing post request --> undefined 'to_i error

我有一个通过以下方式构建的rails-api应用程序:rails-api new myapp --skip-sprockets -d mysql

然后我有一些我使用创建的内容:rails g scaffold data name:string

我在使用 rails 默认测试工具测试创建该类型对象的发布请求时遇到问题。我越来越:

我的路线已设置:resources :data, except: [:new, :edit]
控制器和模型已像往常一样由rails g scaffold

详细信息:
-Ruby 2.1.1
-Rails 4
-data_controller.rb:https ://gist.github.com/glesage/9902677-data_controller_test.rb: https
://gist.github.com/glesage/9902719- 错误堆栈轮流:https ://gist.github.com/glesage/9903392 - 无轮流错误堆栈: https : //gist.github.com/glesage/9903413 - artmees 方式错误堆栈:https://gist。 github.com/glesage/9903483 *



请指教!谢谢!!

0 投票
0 回答
201 浏览

ruby-on-rails - 无法使用 rails-api gem 生成任何东西

我正在尝试使用 rails-api gem 设置一个 rails json api,但我在让它正常工作时遇到了一些麻烦。

我正在关注本教程,因为我将为 ember.js 前端创建它。

http://blog.jasonkriss.com/building-an-app-with-ember-app-kit-part-1/

并且捆绑(在修复第 3 行的 [ 问题之后)有效。

当我尝试生成他在捆绑后生成的模型时,我只是在终端中得到类似这样的东西......

我已经用谷歌搜索了“未定义的方法'配置'”但我似乎无法找到任何明确的答案。

0 投票
1 回答
399 浏览

ruby-on-rails - 如何使用 Shoulda 测试应用程序控制器方法?

我找到的用于测试应用程序控制器内部的最接近的资源是here。不幸的是,它实际上不起作用—— MyApp 生成一个未初始化的常量。我尝试了其他添加适当路线的方法,但都没有奏效。

我的目的是测试我嵌入到 ApplicationController 中的身份验证方法——我不想将测试放到其他控制器中,因为这不是他们关心的问题。这是支持他们的东西,但它不是“他们的”功能的一部分。需要'test_helper'

上面的代码导致 url helper 方法错误:

编辑:

感谢 Boulder 的善意建议,我跳过了这个,但他关于修复路线的建议不起作用: