[ English ]

3.4 H-InvDB ウェブサービス

ここではH-InvDB Web serviceについてご紹介します。

  1. H-InvDB Web serviceとは?
  2. どのようなサービスを提供しているのか?
  3. どうやって利用するのか?
  4. 英数字以外が含まれる情報を扱うには?
  5. 非同期にメソッドを実行するには?

1. H-InvDB Web serviceとは?

H-InvDB Web serviceでは、H-InvDBのデータを利用することができる様々なAPIを提供しています。
どなたでもH-InvDB Web serviceを利用したアプリケーションの開発が可能になります。

2. どのようなサービスを提供しているのか?

H-InvDB Web serviceでは、11種類のAPIを提供しています。
各APIの詳細については以下のページをご参照ください。
REST API リスト
SOAP API リスト

3. どうやって利用するのか?

H-InvDB Web serviceでは、REST形式のAPIを提供しています。

RESTを使用するには、HTTPコネクションを使用できる環境が必要になります。
また、ブラウザや、PerlやJavaのようなプログラミング言語が必要です。

本サービスにアクセスするには、
http://h-invitational.jp/hinv/hws/keyword_search.php?query=cancer
			
のように [http://h-invitational.jp/hinv/hws/keyword_search.php?] に向けてメソッド名、パラメータを渡すだけです。
本システムは、POSTでアクセスすることを推奨しておりますが、
GETの限界を超えるような情報量を持つ parameter でなければ、GET を用いたアクセスも可能です。

4. 英数字以外が含まれる情報を扱うには?

もし"Homo sapiens" のように、英数字以外が含まれるクエリーを実行したい場合、以下のようにエンコードを行ってください。(例はjavaです)
String query = "query=" + URLEncoder.encode("Homo sapiens","UTF-8");
		

5. 非同期にメソッドを実行するには?

RESTを実行する場合、コネクション(接続)を確立しつづける必要がありますが、
非同期に実行することも可能です。非同期に実行させることにより、クライアント側の資源を有効利用することができます。
非同期にメソッドを実行する方法についてLWPを用いた方法を紹介します。

メソッド名の最後にAsyncとなっているメソッド(例.keyword_search)が、非同期通信用のものになります
Step1.非同期通信を行います
	
use LWP::UserAgent;
$ua = new LWP::UserAgent;

# make request
my $req = new HTTP::Request POST => "http://h-invitational.jp/hinv/hws/keyword_search.php";
$req->content_type("application/x-www-form-urlencoded");
# set parameters
$req->content("query=HIT00002218*&start=1&end=100");

# send request and get response.
my $res = $ua->request($req);

# show response.
print $res->content;
	
この出力は
Your requestID is:20070717144558241
	
のようになり、後ろの数字部分を用いてRequestManagerというサービスに問い合わせを行います。

Step 2. 結果の取得を行います。
use LWP::UserAgent;
$ua = new LWP::UserAgent;

# make request
my $req = new HTTP::Request POST => "http://h-invitational.jp/hinv/hws/keyword_search.php";
$req->content_type("application/x-www-form-urlencoded");
# set parameters
$req->content("query=HIT00002218*&start=1&end=100");

# send request and get response.
my $res = $ua->request($req);

# show response.
print $res->content;
	
もし完了していたらサービスの結果を取得できます。 未完了の場合"Your job has not completed yet"のメッセージが返されます。

更新日:2007年12月26日