サーバとのデータのやり取りにJSON-RPCが個人的に好きなので使います。
JSON-RPCとは
またRESTと違い対象がHTTPを受け付けるサーバーである必要がないというメリットがあり、これがwebsocketやメッセージングAPI、webworkerといったHTML5 APIと非常に相性がいいのです。
またRPCというとXML RPCが有名ですが、JSON RPCはそれにくらべて以下のような特徴を持ちますプロトコルが軽量・シンプル
名前つきパラメーター(namedparameter)
バッチリクエスト
らしいです。詳しくはこちら
http://kagigotonet.hatenablog.com/entry/20121204/1354630831
使うライブラリ
AFJSONRPCClient
https://github.com/AFNetworking/AFJSONRPCClient
こちらが良さそうなので使います。
podでインストールして、swiftからobjective-cを読むにはBridging-Headerに記述。
サンプルコード(Client)
var client = AFJSONRPCClient(endpointURL: NSURL(string: "http://example.com/rpc" as NSString))
var param:NSArray = ["value1","value2"]
client.invokeMethod("addition",//getUidはJson-RPCのメソッド名
withParameters:param,
success: { (operation: AFHTTPRequestOperation!, responseObject:AnyObject!) in
//responseObjectは返ってくる値
NSUserDefaults.standardUserDefaults().setObject(responseObject,forKey:"uid")
}, failure: { (operation: AFHTTPRequestOperation!, error: NSError!) in
println("Error: \(error)")
})
サンプルコード(Server)
この辺のライブラリ使うのが良さそう
https://github.com/fguillot/JsonRPC
サンプルのままですがこんな感じ。
<?php
require 'JsonRPC/Server.php';
use JsonRPC\Server;
$server = new Server;
// Procedures registration
$server->register('addition', function ($a, $b) {
return $a + $b;
});
$server->register('random', function ($start, $end) {
return mt_rand($start, $end);
});
// Return the response to the client
echo $server->execute();