土曜日, 4月 06, 2013

JavaでREST クライアント

JavaでREST

RESTクライアントとしてJavaを選ぶことは正直言って正しい Tech Choiceとは思えないが,それでも現実的にそれをやらざる得ないことも多い.
とはいえ,それでもCommons等を使ってなんとかそれなりに書くことはできる(最もPythonやgroovyの非ではないが).
JerseyやRestEasy等といったRESTライブラリもあるが,ここではApache HttpComponentsを使う.

サンプル

ここではMongoDBのRESTインターフェースに接続し,テストDBのテスト用コレクションに対してクエリをかける例を示す.
MongoDBはデフォルトではRESTインターフェースを有効化していないので,Mongodを起動する際 --restパラメータを渡す必要がある.


package org.tanuneko.restclient;

import java.io.IOException;
import java.io.StringWriter;

import org.apache.commons.io.IOUtils;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MongoRestClient {

private static Logger logger = LoggerFactory.getLogger( MongoRestClient.class );

public static void queryFind( String dbName, String collection, String userName ) {

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet req = new HttpGet( "http://127.0.0.1:28017/" + dbName + "/" + collection + "/?filter_user_id=" + userName );

try {
HttpResponse res = httpClient.execute( req );
StringWriter sw = new StringWriter();
IOUtils.copy( res.getEntity().getContent(), sw );
logger.info( sw.toString() );
} catch( IOException ioE ) {
logger.error( ioE.getMessage(), ioE );
System.exit( 1 );
}

}

public static void main(String args[]) {
        queryFind( "DevTest", "DevTest", "tanu" );
}

}


MongoDBのRESTインターフェースについてはここを参照されたし.



0 件のコメント: