问题标签 [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.
ruby-on-rails - Rails + rails-api:使用 Helper 的循环依赖
我在 helpers api_helper 文件夹中有一个模块 ApiHelper ,这引起了一些混乱。在 controllers/api/v1 我有两个控制器,它们都有
确切的错误是:
我认为这个问题正在发生,因为我有一个使用 rails-api 像这样设置的 api_controller:
我的普通应用程序控制器是这样设置的
api 控制器继承自 ApiController,而我的普通 App 控制器继承自 ApplicationController。
或者它可能更简单;想法?
ruby-on-rails - 使 Rails 中的记录过期
我的 Rails 应用中有 ApiKey 记录。它有一个 expires_at 日期时间列。
我正在尝试使用此回调使其过期:
但是,我第一次尝试查找过期的 ApiKey 时,它仍然返回密钥。只有当我再次调用 find 时,它才会 raise RecordNotFound
。
这是有问题的,因为我不能让过期的 ApiKeys 工作。
ruby-on-rails - 在门卫中的某些操作上验证客户端应用程序而不是 access_token?
我正在使用 Rails JSON API + Doorkeeper,所以我想让具有 client_id 和 client_secrete 的移动应用程序请求 POST /users 来创建用户,而无需使用访问令牌进行验证。目前,我直接在 Rails 控制台中创建用户,移动应用程序使用使用资源所有者密码凭据流来获取令牌以通过 API 访问受保护的资源。在下面的代码中,移动应用程序必须提供访问令牌才能调用索引操作:
目前,创建操作不会验证任何内容,所以无论如何要告诉 door_keeper 在允许调用特定操作之前验证 client_id 和 client_secret 吗?我不希望它公开。
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 方式?
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 对象,但没有任何效果。到目前为止,我使用过:
- {“用户”:{“名称”:“测试”}}
- {{“名称”:“测试”}}
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'”)。
任何建议都会受到欢迎。
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 响应。
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
*
请指教!谢谢!!
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 行的 [ 问题之后)有效。
当我尝试生成他在捆绑后生成的模型时,我只是在终端中得到类似这样的东西......
我已经用谷歌搜索了“未定义的方法'配置'”但我似乎无法找到任何明确的答案。
ruby-on-rails - 如何使用 Shoulda 测试应用程序控制器方法?
我找到的用于测试应用程序控制器内部的最接近的资源是here。不幸的是,它实际上不起作用—— MyApp 生成一个未初始化的常量。我尝试了其他添加适当路线的方法,但都没有奏效。
我的目的是测试我嵌入到 ApplicationController 中的身份验证方法——我不想将测试放到其他控制器中,因为这不是他们关心的问题。这是支持他们的东西,但它不是“他们的”功能的一部分。需要'test_helper'
上面的代码导致 url helper 方法错误:
编辑:
感谢 Boulder 的善意建议,我跳过了这个,但他关于修复路线的建议不起作用: