问题标签 [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 投票
6 回答
8648 浏览

ruby-on-rails - 强制所有收到的请求 Content-Type 为 JSON

Content-Type我实际上正在开发一个使用 Rails 4 的 API 。如果客户端未在标头中指定媒体类型,我想将请求设置为 JSON Content-Type

为了获得这种行为,我尝试before_action在我的中添加以下内容ApplicationController

在我的RegistrationsController#create方法中,我有一个断点来检查一切是否正常。好吧,这个request.format技巧不起作用,尽管该值设置为application/json控制器(或 Rails 内部)似乎不将接收到的请求的 Content-Type 视为 JSON。

我使用以下正文(并且没有 Content-Type)进行了 POST 请求:

通过使用 Pry 进行调试,我看到:

这意味着 Rails 没有考虑我的 request.format 配置为 的请求Mime::JSON,而是使用Mime::ALLand 所以它没有解析请求的 JSON 正文。:(

0 投票
2 回答
1782 浏览

ruby-on-rails - Rails API + AngularJS + Websocket-Rails gem

我的服务器正在运行 websocket-rails gem 来处理 websocket。

我在将 websocket-rails 与使用 angular 的 phonegap 项目一起使用时遇到问题,因为我需要在我的 Angular 前端中独立于 rails 资产管道初始化 websocket-rails 客户端。

是否可以将 websocket-rails 客户端单独加载到 Angular 项目中?或者我可以使用角度套接字指令来管理带有 websocket-rails 的套接字吗?

0 投票
2 回答
2826 浏览

ruby-on-rails - Rails JSON API oauth 身份验证

我一直在研究为使用 rails-api 的纯 JSON rails 4.1 应用程序实现 facebook、twitter 和电子邮件/密码身份验证的最佳方法。rails 应用程序没有视图,仅在 android 和 iphone 应用程序混合原生应用程序之间提供 JSON(它们使用 ionic 框架,这是一个编译成原生应用程序的角度应用程序)。

在过去,我已经实现了基本身份验证,其中 auth_token 从客户端应用程序的标头中传递到 Rails API,使用内置 auth 的 rails 没有问题,但是因为这次我需要与 Facebook 和 Twitter 集成我正在寻找使用 oauth 的解决方案。

我已经研究过设计,但它似乎不能很好地与纯 JSON api 配合使用。同样,omniauth 似乎依赖于视图和重定向。此外,opro 和 doorkeeper 似乎非常适合成为您自己的 oauth 提供者,但我看不出他们如何处理 facebook 和 twitter 等第三方。

人们如何在 Rails 中为纯 JSON API 应用程序实现多提供者 oauth 身份验证?

0 投票
3 回答
514 浏览

ruby-on-rails - 如何在 Rails API 中使用角度资源

我想使用角度资源与我的 rails 后端交互,内置的 $resource 服务与 rails API 不完全兼容,比如默认不支持 PUT,我必须使用 PUT 方法添加自定义操作“更新”。

这种方法的问题是我必须为每个资源添加更新操作,以使角度资源与 Rails API 后端对齐。

这是一个好的方法吗?

我还发现了一个角度资源包装器angularjs-rails-resource,它提供了一个带有 PUT http 动词的更新方法,但它处理参数传递的方式似乎有点奇怪。例如,它用“未定义”键包装参数。

那么,问题是将角度资源与 rails API 一起使用的最佳实践是什么?

0 投票
2 回答
3852 浏览

ruby-on-rails - Rails 4 + Rails-API + RSpec + Devise - 使用自定义设计路线测试控制器时遇到问题

我目前正在构建一个 API 并尝试测试我的控制器。我收到了与我无法解决的设计相关的错误。这是我目前拥有的:

我目前得到的错误是:

我已经四处寻找解决这个问题的方法,并尝试了很多不同的问题。此处的问题解决方案(How to write controller tests when you override devise registration controller?)表示将以下代码放在规范中的 before 块中。

但是当我将它添加到我的控制器时,我得到另一个错误,上面写着:

此处的另一个问题的解决方案(nil:NilClass 的未定义方法 'env')说尝试添加include Devise::TestHelpers到规范中,但是当我这样做时,会返回相同的错误。

我正在使用的当前宝石:

导轨 (4.0.2)

rails-api (0.2.0)

rspec-rails (2.14.1)

设计(3.2.2)

使用这两个教程作为一种指南:https ://lucatironi.github.io/tutorial/2012/10/15/ruby_rails_android_app_authentication_devise_tutorial_part_one/

http://commandercoriander.net/blog/2014/01/04/test-driving-a-json-api-in-rails/

任何帮助将不胜感激,谢谢!

0 投票
1 回答
712 浏览

json - 将带有 Curl 的 JSON 发布到 Rails 服务器会导致 ParseError -795

发布以下内容会给出 MultiJson::ParseError - 795: unexpected token at '{"investor": {"name": "Theresa Enyedi"}'

帮助将不胜感激。

马哈洛唐

0 投票
0 回答
411 浏览

ruby-on-rails - Filter a password for a RoR API call

I have a ruby on rails web service that is consumed by another rails application. I have a form on the client application to post a user to an API endpoint on the service. The method on the client that posts a user to the webservice looks like this:

This method receives data from a user registration form. When i check the server log the password sent from the form to this method is filtered. The server log looks like this:

But when this method makes a request to the API endpoint, the password is not filtered and can be obtained from the server log. The log for this request looks like this:

How can i ensure that the password and password confirmation sent to the API endpoint is filtered and cannot be directly extracted from the server log.

0 投票
1 回答
22 浏览

ruby - 未初始化的常量 RecieversController::TellstickR

我无法让我的 rails-api 项目识别我已安装的 gem。这篇文章的标题说明了我得到的错误。

我正在尝试制作最简约的项目来完成这项工作。

宝石文件:

PS。我只在这个文件中添加了最后一行。

路线.rb:

Recievers_controller.rb:

我使用了最新的 RubyInstaller,所以我可能拥有最新的稳定版 ruby​​。之后运行 gem install rails 。我已经搜索并浏览了一些关于 Ruby 和 RoR 的指南,但我似乎仍然无法弄清楚这一点。为什么它不能识别tellstickr gem?我希望我已经为一些 ruby​​-guru 提供了足够的信息来解决这个问题。我也运行了捆绑安装。

去的时候

在运行“rails s”启动网络服务器后,这就是我得到的:

我需要帮助,因为我是初学者!:)

//丹尼尔

0 投票
1 回答
201 浏览

ruby-on-rails - 在 Rails 中处理带有“action”参数的 POST

我的 API 正在处理来自外部源的回调,该回调发送包含action参数的 POST。该参数与 rails 动作无关,只是名称相同:

当这命中rails时,rails将参数覆盖为动作的名称(在这种情况下create)......所以我得到:

如何action以干净的方式访问原始参数?目前我必须解析raw_post

哪个丑……有什么更好的吗?

0 投票
1 回答
486 浏览

ruby-on-rails - 生产中的自动加载

我将所有控制器声明为

class Api::V1::SomeController < Api::V1::ApiController; (...); end

在哪里

class Api::V1::ApiController < ApplicationController; end

我所有的控制器都放在/app/controllers/api/v1/*_controller.rb,ApplicationControllerapp/controllers/application_controller.rb

在开发中一切正常,但我在生产中要求和加载包装在 api 版本控制命名空间中的控制器时遇到问题。

在生产环境(本地或heroku)中,我得到了:LoadError (Unable to autoload constant Api::V1::SomeController, expected /app/app/controllers/api/v1/some_controller.rb to define it):

app/config/environments/production.rb在生产环境中配置和要求版本控制 api的正确方法是什么。