4

我目前有一个使用 Devise 的 rails 应用程序,并且可以通过浏览器登录。我现在想创建一个使用这个 rails 应用程序作为后端的原生 iPhone 应用程序。我想要什么:

  • 当用户第一次打开 iOS 应用程序时,他们会看到一个登录屏幕。
  • 他们输入信息,应用程序会尝试登录。如果成功,它会列出 rails 应用程序的用户(目前)。否则会提示登录错误。
  • 然后,用户可以单击用户的姓名并显示用户的个人资料等。应用程序需要能够执行所有 CRUD 操作,就好像它们在站点本身上一样。

现在我正在为 iPhone 应用程序使用 Devise 和 RestKit。我在我的 Rails 应用程序中启用了 http_auth,我可以设置用户名/密码并从我的 /users 页面获取响应(以 JSON 格式列出我的用户)。

导轨:

class UsersController < ApplicationController

before_filter :authenticate_user!

def index
    @users = User.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @users }
    end
end

end

iPhone(使用 Restkit):

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    RKClient *client = [RKClient clientWithBaseURL:@"http://192.168.1.105:3000" username:@"xxxx" password:@"xxxx"];

    [[RKClient sharedClient] get:@"/users.json" delegate:self];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)request:(RKRequest*)request didFailLoadWithError:(NSError *)error {
    NSLog(@"error");
}

- (void)request:(RKRequest*)request didLoadResponse:(RKResponse*)response {
    NSLog(response.bodyAsString);
}

我不确定从这里做什么或如何处理它。

  1. 如何处理登录屏幕?好的,我可以使用 http 基本身份验证执行 'http://localhost:3000' GET 并获取用户列表,但是我应该如何测试用户的凭据是否输入正确?有什么方法可以让登录时返回 OK 或 NOT OK 响应?
  2. 与 rails 应用程序交互的最佳方式是什么?可以使用 RestKit 做 GET /users/2 之类的事情吗?还是我需要构建某种 api?我不知道从哪里开始这样的事情。
4

1 回答 1

0

如果您有设计,为什么要使用基本的 http auth?使用设计,您可以在 json 哈希中返回身份验证错误,并将其显示在登录屏幕上。

以经典的 REST 方式构建您的应用程序,它对于 Web 客户端和移动客户端都非常舒适。

您还可以尝试使用 Rabl https://github.com/nesquena/rabl之类的东西在 Rails 应用程序中构建智能 JSON API。

于 2012-10-08T18:36:02.987 回答