【问题标题】:Allowing rails api to return json允许 rails api 返回 json
【发布时间】:2012-12-06 06:34:21
【问题描述】:

我迷路了——甚至不知道要问什么问题。

我按照这里的描述构建了一个 api:http://railscasts.com/episodes/350-rest-api-versioning?view=asciicast

它位于需要登录的网站上。

我登录后可以通过浏览器访问api,没问题。这是我的路线:

## API
namespace :api do
  namespace :v1 do
    resources :users, :sessions
  end
end

我被要求做的是让外部方可以使用 Api 密钥和可选的查询参数和 userId 请求 json

我已尝试 curl 网站 (https) 并被重定向到注销,即使使用用户名和密码也是如此。

我的老板建议在根 url 上使用一个公共表单,它接受 userId、apikey 和 params,并且可以 curl 并将通过 curl 发布的参数返回数据。

我不知道如何做到这一点,甚至不知道如何在不登录的情况下调用数据。我查看了另一个屏幕投屏http://railscasts.com/episodes/353-oauth-with-doorkeeper(这是付费版本),但他的交互允许另一个 Rails 应用程序与他的原始应用互动。

基本上,我应该在哪里查找有关如何完成此操作的信息?我可以提供任何其他建议或更多信息以使我的问题更清楚吗?

感谢您的宝贵时间。

【问题讨论】:

    标签: ruby-on-rails api


    【解决方案1】:

    更多 RailsCast!瑞安贝茨有你在http://railscasts.com/episodes/352-securing-an-api?view=asciicast

    所以归结为:

    • 您需要确定调用您的 API 的客户端是否需要标识自己,或者是否还需要以某种方式进行身份验证
    • 您需要确定客户端的用户(即调用您的 API)是否需要通过您的系统进行身份验证——也就是说,是否有“用户”?

    某些 API 允许调用者将 API 密钥作为查询的一部分传递;其他人则需要更复杂的身份验证过程,通常是 OAuth,这有点棘手。

    某些 API 提供用户特定的信息,在这种情况下,您需要一种方法来确保用户可以登录、更改密码、找回忘记的密码等。也有一个很好的 RailsCast (或者您可以使用 Devise gem,尽管如果您主要实现 API,我不会推荐它 - 不是 Devise 的强项)。

    我猜你知道这部分,但 curl 所做的只是模拟你的客户端将对你的 API 发出的 HTTP 请求,并且(使用 --include 选项)可以向你显示有关返回响应的信息 - - 标头、cookie 等。

    谷歌“rails api authentication”了解更多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2017-08-25
      相关资源
      最近更新 更多