允许rails api返回json

时间:2012-12-05 22:19:51

标签: ruby-on-rails api

我迷失在这里 - 甚至不知道要问什么问题。

我按照此处所述构建了一个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

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

我的老板建议根网址上的公共表单接受userId,apikey和params,并且可以卷曲并通过curl发布的参数返回数据。

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

基本上,我应该在哪里寻找有关如何实现这一目标的信息?我可以提出任何其他建议或更多信息以使我的问题更清楚?

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

更多RailsCasts! Ryan Bates让您了解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等。

Google“rails api authentication”了解更多信息。