tr.imのAPIを使って短縮URLを作成する方法


以前に「bit.lyのREST APIを使って短縮URLを作成する方法 - Tomute’s Notes」という記事でiPhoneアプリ等で短縮URLを作成する方法を紹介したが、今回はbit.lyではなくtr.imという別のURL短縮サービスを使う方法を記載する。

tr.imのAPIの特徴としてはAPIキーが不要*1という事と、URLの短縮専用のシンプルな簡易インタフェースが用意されているという点である。また生成される短縮URLもbit.lyに比べて若干短い。


以下にこの簡易インタフェースを利用した方法を記載する(事前に特別な設定は不要)。
bit.lyと比べても非常に簡単に短縮URLを取得する事が可能である。

NSString *longURL = @"http://d.hatena.ne.jp/tomute/";
NSString *urlString = [NSString stringWithFormat:@"http://api.tr.im/v1/trim_simple?url=%@",longURL];
NSURL *url = [NSURL URLWithString:urlString];

NSString *shortURL = [NSString stringWithContentsOfURL:url encoding:NSASCIIStringEncoding error:nil];
NSLog(@"%@", shortURL);


上記方法の欠点としてはAPIの使用制限を超える等のエラーが発生した場合、そのエラー原因を知ることが出来ないという点である。
そこで、エラー原因を知りたい場合には、簡易インタフェースの代わりに以下のように通常のインタフェースを利用すれば良い。
(以下の例では、結果をJSON形式でもらうよう指定しているので、結果の解析にJSON Frameworkを使用している*2

NSString *longURL = @"http://d.hatena.ne.jp/tomute/";
NSString *urlString = [NSString stringWithFormat:@"http://api.tr.im/v1/trim_url.json?url=%@",longURL];
NSURL *url = [NSURL URLWithString:urlString];
	
NSString *results = [NSString stringWithContentsOfURL:url encoding:NSASCIIStringEncoding error:nil];
NSDictionary *dic = [results JSONValue];
if ([[[dic objectForKey:@"status"] objectForKey:@"code"] intValue] == 200) {
    NSString *shortURL = [dic objectForKey:@"url"];
    NSLog(@"%@", shortURL);
}


なお、tr.imが返すJSONは以下のような形である。

{"trimpath":"MVr7","reference":"XVtbqNjTLBcep4XPeaslHS6mOVNkZl","trimmed":"2010-02-05 01:39:43 -0800","destination":"http://d.hatena.ne.jp/tomute/","trim_path":"MVr7","domain":"hatena.ne.jp","url":"http://tr.im/MVr7","visits":0,"status":{"result":"OK","code":"200","message":"tr.im URL Added."},"date_time":"2010/02/05 01:39:43 -0800"}


最後におまけであるが、tr.imはbit.ly互換のインタフェースも用意しているので、bit.lyを用いた短縮URLの作成にエラーが発生した場合には、tr.imを代わりに利用するというような仕組みにする場合には、こちらを利用すると便利そうである。


関連記事

*1:短縮URLの作成要求はIPアドレス単位で1日に48回まで、また1時間に10回までという制限があり、この制限を緩和してもらうためにはAPIキーの取得&緩和申請が必要。

*2:JSON Frameworkの使い方に関しては「[iPhone] JSON Framework の使い方(準備編) | Sun Limited Mt.」が参考になる。