Ruby: Rails を iOS のバックエンドとして使う

ゲームサービスの全国ランキングなどとして、バックエンドに使う場合、Rails で一手間加えます。

Scaffold でこのページのように、 Ranking を格納できるようなウェブアプリを作成します。

JSON フォーマットであれば CSRF トークン無しで外部からアクセスできるようにします。
application_controller.rb を以下のように編集します。

Ruby: app/controllers/application_controller.rb

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception
  skip_before_action :verify_authenticity_token, if: :json_request?
 
  protected
 
  def json_request?
    request.format.json?
  end

end

これで rails s で立ち上げておきます。

 

iOS からの POST 例

#import <AFNetworking/AFNetworking.h>
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *params = @{@"ranking": @{@"name": @"hage", @"score": @"1234"}};
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager POST:@"http://localhost:3000/rankings.json" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

http://localhost:3000/rankings をみて、データが追加されているか確認します。