LoginSignup
12
13

More than 5 years have passed since last update.

SwiftでJSON-RPCを使う時のメモ

Last updated at Posted at 2014-06-27

サーバとのデータのやり取りに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();
12
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
13