[ English ]

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

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

1. H-InvDB Web serviceとは?

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

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

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

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

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

REST APIを使用するには、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 を用いたアクセスも可能です。

SOAP APIを使用するには、各プログラミング言語のSOAP対応ライブラリをご使用ください。
WSDL文書は
http://h-invitational.jp/hinv/hws/API名?wsdl
で参照いただけます。

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"のメッセージが返されます。

6. サンプルプログラム

Perl / PHP / Ruby / JavaからREST API / SOAP APIを使用してデータ取得を行うサンプルプログラムです。

  1. PerlによるRESTサンプルプログラム
  2. PHPによるRESTサンプルプログラム
  3. RubyによるRESTサンプルプログラム
  4. JavaによるRESTサンプルプログラム
  5. PerlによるSOAPサンプルプログラム
  6. PHPによるSOAPサンプルプログラム
  7. RubyによるSOAPサンプルプログラム
  8. JavaによるSOAPサンプルプログラム