5 ZipcodeServiceを使った住所の検索
一通りの実装が完了したら、プロジェクトをサーバー上で実行しよう。プロジェクトマネージャーから[実行]-[サーバーで実行]を選び、使用するサーバーとして「Liberty Profile」を指定する(図5.1)。
起動が完了したら、Webブラウザからリクエスト用のURLにアクセスしてみる。本稿の例では、すべての住所データを取得したい場合のURLは「http://localhost:9080/ZipcodeService/ws/address/all」であり、アクセスすると図5.2のようなJSONデータが返ってくるはずだ。
郵便番号を指定して検索する場合には、URLは「http://localhost:9080/ZipcodeService/ws/address/search?zip=郵便番号」となる。検索条件として「5220002」を指定した場合には、図5.3のようなJSONデータが返される。
続いて、JSON形式でのリクエストを試してみよう。今回は、リクエストを発行するクライアント側のHTML/JavaScriptとして次のようなコードを用意した。リクエストはAjaxによって発行し、レスポンスデータはテーブルで表示する。JavaScriptフレームワークはjQueryとDataTablesを利用している。DataTablesは、検索やソートなどの機能を持ったテーブルを簡単に構築することができるjQueryプラグインである。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>住所検索</title>
<link rel="stylesheet" type="text/css" href="css/jquery.dataTables.min.css">
<script type="text/javascript" src="./js/jquery-2.1.4.min.js"></script>
<script type="text/javascript" src="./js/jquery.dataTables.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#dataTable').DataTable();
});
$(function () {
$('#searchButton').click(function() {
// テーブルの初期化
$('#dataTable').DataTable().destroy();
// リクエスト先のURL
var target = "http://localhost:9080/ZipcodeService/ws/address/jsonsearch";
// リクエストパラメータ用のJSONデータ
var paramData = { "zip" : $('#zipInput').val() };
// リクエストを発行してデータを取得し、テーブルを構成する
$('#dataTable').DataTable( {
"columns": [
{ "data": "id", "sDefaultContent": "" },
{ "data": "zip", "sDefaultContent": "" },
{ "data": "address", "sDefaultContent": "" }
],
"ajax": {
"url": target,
"type": "POST",
"contentType": "application/json",
"data": function () {
return JSON.stringify( paramData );
}
},
"sAjaxDataProp": ""
});
});
});
</script>
</head>
<body>
<h1 class='ui-widget-header'>住所検索</h1>
<div style="margin:20px">
郵便番号: <input id="zipInput" type="text" size="20px" />
<button id="searchButton" type="submit">検索</button>
</div>
<div style="margin:20px">
<table id="dataTable" class="display">
<thead align="left">
<tr>
<th width="10%">ID</th>
<th width="20%">郵便番号</th>
<th>住所</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</body>
</html>
DataTablesでは、ajaxオプションを指定することで、jQueryと同様にAjax通信によってリクエストを発行し、その結果をテーブルのデータとしてセットすることができる。この例では、フォームに入力された文字列をzipパラメータの値とするようなJSONデータを作成し、それを使って「http://localhost:9080/ZipcodeService/ws/address/jsonsearch」に対してリクエストを発行している。
例えば郵便番号に「5220002」を入力して検索した場合、図5.5のような結果になった。
このときのリクエストおよびレスポンスのJSONデータは次のようなものになっていた。
{ "zip" : "5220002" }
[
{ "address" : "滋賀県彦根市松原",
"id" : "0075683",
"zip" : "5220002" },
{ "address" : "滋賀県彦根市松原町",
"id" : "0075684",
"zip" : "5220002"}
]





