Hatena::Grouplifesciencedb

ゲノム周辺 このページをアンテナに追加 RSSフィード

2010-01-30

TogoWS REST API JSON 形式の利用例

|  TogoWS REST API JSON 形式の利用例 - ゲノム周辺 を含むブックマーク はてなブックマーク -  TogoWS REST API JSON 形式の利用例 - ゲノム周辺  TogoWS REST API JSON 形式の利用例 - ゲノム周辺 のブックマークコメント

TogoWS REST APIJSON 形式の出力形式に対応しています。これを利用するとかんたんにウェブページにデータを追加表示できます。この利用例では、HTML書類にレンダリング時にAjaxで取得したPubMedアブストラクトのデータを表示します。

REST APIJSON 形式

PubMed アブストラクトのタイトルの取得 URI は次のようになります。ti フィールドがタイトルです。

その返り値

["From genomics to chemical genomics: new developments in KEGG."]

この返り値JSONJavaScriptで値としてつかうには eval を使用します。TogoWS REST APIJSON 形式を利用する際に配列の一個目の要素を取り出す必要があります。

var data = eval(ti_in_json)[0]

図はイメージ

次のようなウェブページを、TogoWS からデータ取得し作成できます。JavaScript による Ajax でデータは JSON 形式としてクロスドメインに取得されて、そのまま DOM 操作で表示しています。表示しているデータは、タイトル(ti)、著者(au)、書誌情報(so)、アブストラクト(ab)、MeSHターム(mh)です。

http://img.skitch.com/20100130-1xar76tyru7m6waqssdxmw2h3m.jpg


HTML ソース

Ajaxprototype.js をつかいます。

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html><head>
<title></title>
<script src="http://genome.kazusa.or.jp/javascripts/prototype.js" type="text/javascript"></script>
</head>
<body>
<div id='ti'></div>
<div id='au'></div>
<div id='so'></div>
<hr/>
<div id='ab'></div>
<hr/>
<div id='mh'></div>
<hr/>
<script type="text/javascript">
var ti = function(transport) {
  if (transport.responseText !== undefined) {
    $('ti').innerHTML = "<h1>" + eval(transport.responseText)[0] + '</h1>'
}
}
var so = function(transport) {
  if (transport.responseText !== undefined) {
    $('so').innerHTML = eval(transport.responseText)[0]
  }
}
var au = function(transport) {
  if (transport.responseText !== undefined) {
    $('au').innerHTML = eval(transport.responseText)[0].replace(/\n/g, ', ')
  }
}
var ab = function(transport) {
  if (transport.responseText !== undefined) {
    $('ab').innerHTML = eval(transport.responseText)[0];
  }
}
var mh = function(transport) {
  if (transport.responseText !== undefined) {
    var data = eval(transport.responseText)[0]
    data.each(function(e, i) {
      $('mh').innerHTML = $('mh').innerHTML + '<li>' + e + '</li>'
    })
  }
}
function failure(transport) {  alert(transport.responseText); }

new Ajax.Request("http://togows.dbcls.jp/entry/ncbi-pubmed/16381885/ti.json", { onSuccess: ti,  onFailure: failure})
new Ajax.Request("http://togows.dbcls.jp/entry/ncbi-pubmed/16381885/so.json", { onSuccess: so,  onFailure: failure})
new Ajax.Request("http://togows.dbcls.jp/entry/ncbi-pubmed/16381885/ab.json", { onSuccess: ab,  onFailure: failure})
new Ajax.Request("http://togows.dbcls.jp/entry/ncbi-pubmed/16381885/au.json", { onSuccess: au,  onFailure: failure})
new Ajax.Request("http://togows.dbcls.jp/entry/ncbi-pubmed/16381885/mh.json", { onSuccess: mh,  onFailure: failure})
</script>
</body> </html>

まとめ

  • TogoWS REST APIJSON 形式を Ajax で利用する例です。
  • 返り値は配列がいっこ余分にみえます。
  • PubMed アブストラクトから書誌情報とMeSHタームだけを表示するページをつくりました。
  • PMID だけを持っているページに、その文献のタイトルを表示追加するのは簡単なお仕事です。
トラックバック - http://lifesciencedb.g.hatena.ne.jp/nakao_mitsuteru/20100130