ページの先頭行へ戻る
Big Data Integration ServerV1.7.0 EDI連携/DB連携編ユーザーズガイド

2.5.3 データ検索API

2.5.3.1 概要

データをメタデータで検索し、検索条件に合致する伝票データ一覧のID(ticket_id)リストを取得する際に用いるWeb APIです。

取得されたIDはデータダウンロードAPIで利用されます。

情報区分コード以外の項目に対して、値の最後に“*”を付与することでAND検索、“-”を付与することでOR検索を項目間の条件として指定することができます。指定がない場合はAND検索を行います。
項目内の値をカンマ区切りで指定することで複数の条件のOR検索が可能です。

正常に処理が完了した場合は検索条件に合致した伝票データのIDリストがJSON形式で返却されます。

マスキング機能が有効な場合、実行したユーザーのアクセス権限チェックを行います。返却する伝票データのIDリストに対してマスキングすることが可能です。

検索条件に応じたデータが存在しない場合はその旨が返却されます。

図2.4 データ検索APIの呼び出し関係

(1) 情報区分コードに応じた検索用パラメータを取得します。

(2) 伝票抽出用メタデータデータベース(Fujitsu Enterprise Postgres)に対してSQLを実行します。

アクセス権限コントロール連携ありの場合、伝票データIDにマスキング処理を行うため、以下(3)を実施します。
(アクセス権限コントロール連携なしの場合、マスキング処理は行われません。)

(3) ユーザー情報からアクセスルールを取得し、取得したアクセスルールを元に伝票データのIDリストをマスキングします。

2.5.3.2 リクエスト設計

2.5.3.2.1 リクエストフォーマット

項目

備考

APIエンドポイント (相対URI)

/search

クエリパラメータ

data_type

必須

情報区分コード

4桁までの任意の値(数字文字列)を指定することができます

例)

出荷予定データの場合:10

出荷確定データの場合:20

get_status

任意

取得フラグ

0: 未取得,1: 取得済, 2: 未取得・取得済み両方

注)初期値: 0,データダウンロードAPIで取得された場合: 1,未指定時: 0

src_location_code

任意

発送元拠点コード

拠点コードを13桁の数字で指定します

未指定時は全ヒット

dst_location_code

任意

発送先拠点コード

拠点コードを13桁の数字で指定します

未指定時は全ヒット

from_create_datetime

任意

検索範囲の始点日時

YYYYmmddHHMMSS形式

データ格納日時を範囲検索します

未指定時は全ヒット

to_create_datetime

任意

検索範囲の終点日時

YYYYmmddHHMMSS形式

データ格納日時を範囲検索します

未指定時は全ヒット

key名

任意

検索用パラメータ

パラメータ名は定義されている検索用パラメータの項目名が設定されます

最大で20個設定可能とします

separator

任意

検索値の区切り文字

指定がない場合はカンマとします

エスケープ文字も指定可能です

例) & → %26

HTTPメソッド

GET

HTTPリクエストヘッダ

Authorization

任意

Bearer  {token}

使用する認証サービスのユーザー認証用トークンを指定します

例)
curl -i -s "http://<開発実行環境サーバのIPアドレス>:<ポート番号(注)>/search?data_type=10&get_status=0&src_location_code=1234567890321&dst_location_code=1234567890123&from_create_datetime=20210524120130&to_create_datetime=20210624120130" -X GET
注)インベントリファイルのapi_tomcat_portに設定した値を指定

src_location_code(発送元拠点コード)、dst_location_code(発送先拠点コード)、key名(検索用パラメータ)の項目に対しては、値の指定方法を変えることで下記のような検索ができます。複数種類の検索が混在していた場合、項番の順序に従って評価します。

項番

検索の種類

値の指定方法

値の例

1

項目内のOR検索

「検索値の区切り文字」で複数指定

1110123456789,2220123456789

2

項目間のOR検索

最後に“-”を付与

1110123456789-

3

項目間のAND検索(注)

最後に“*”を付与

または何も付与しない

1110123456789*

1110123456789

注) 末尾に*がある値(100*など)を項目間のAND検索で使用する場合は末尾に付与する*を省略できません(例6)を参照)

src_location_code、dst_location_code、key名を使用した検索例:
例1) 発送元拠点コードが“1110123456789”かつ発送先拠点コードが“2220123456789”のデータを検索
src_location_code=1110123456789*&dst_location_code=2220123456789*
   
例2) 発送元拠点コードが“1110123456789”または発送先拠点コードが“2220123456789”のデータを検索
src_location_code=1110123456789-&dst_location_code=2220123456789-
例3) 発送元拠点コードが“1110123456789”または“3330123456789”のデータを検索
src_location_code=1110123456789,3330123456789
例4) 「発送元拠点コードが“1110123456789”または“3330123456789”」 かつ
      「発送先拠点コードが“2220123456789”または“4440123456789”」 のデータを検索
src_location_code=1110123456789,3330123456789*&dst_location_code=2220123456789,4440123456789*
例5) 「発送元拠点コードが“1110123456789”または“3330123456789”」 かつ
      「発送先拠点コードが“2220123456789”または“4440123456789” または
      検索用パラメータmykeyが“5555”」 のデータを検索
src_location_code=1110123456789,3330123456789*&dst_location_code=2220123456789,4440123456789-&mykey=5555-
例6) 「検索用パラメータmykey1の値が"2024100*"」かつ「検索用パラメータmykey2の値が"111*"」のデータを検索
mykey1=2024100**&mykey2=111**

検索用パラメータに対しては、各値の指定方法を変えることで下記のような検索ができます。

項番

検索の種類

値の指定方法

値の例

1

{値}と一致

{値} または equal:{値}

abcde

equal:vwxyz

2

{値}より大きい(文字列比較)

greater-than:{値}

greater-than:20221001

3

{値}より大きい(文字列比較)

または一致

greater-than-or-equal:{値}

greater-than-or-equal:20220101

4

{値}より小さい(文字列比較)

less-than:{値}

less-than:20211201

5

{値}より小さい(文字列比較)

または一致

less-than-or-equal:{値}

less-than-or-equal:20211201

6

{値}で始まる

starts-with:{値}

starts-with:ab

7

{値}で終わる

ends-with:{値}

ends-with:de

8

{値}を含む

contains:{値}

contains:bc

検索用パラメータの使用例:
例1) 検索用パラメータmykey1が”abcde”のデータを検索
mykey1=abcde
例2) 検索用パラメータmykey1が”greater-than:abcde”のデータを検索
mykey1=greater-than:abcde
例3) 検索用パラメータmykey1が”ab”で始まる または” yz”で終わるデータを検索
mykey1=starts-with:ab,ends-with:yz
例4) (検索用パラメータmykey1が”abcde”または”vwxyz”)かつ
      (検索用パラメータmykey2が”ab”で始まる または ”yz”で終わる) データを検索
mykey1=equal:abcde,equal:vwxyz*&mykey2=starts-with:ab,ends-with:yz*
例5) (発送元拠点コードが”1110123456789”または”3330123456789”)かつ
      ((検索用パラメータmykey1が”abcde”または”vwxyz”)または
      (検索用パラメータmykey2が”ab”で始まる または ”yz”で終わる))データを検索
src_location_code=1110123456789,3330123456789*&mykey1=equal:abcde,equal:vwxyz-&mykey2=starts-with:ab,ends-with:yz-

注意

文字列比較

検索用パラメータの文字列比較(greater-than, greater-than-or-equal, less-than, less-than-or-equal)では文字列を左から1文字ずつ比較し、大小を判定します。

  • 大小比較の結果はデータ格納・抽出APIで使用しているデータベースの照合順序であるエンコーディングのバイナリ値の大小関係で判定されます。

  • 日付や値段など数値比較を実施したい場合は比較対象となる値の桁数を揃えることで数値比較と同じ結果を得ることができます。

文字列比較の使用例:

例1) mykey1=2024/10/01でファイルアップロード済の場合

  • 検索用パラメータmykey1が”greater-than:2024/09/30”のデータを検索(桁数統一)

    mykey1=greater-than:2024/09/30

  結果:mykey1=2024/10/01を持つticket_idがヒットする

  • 検索用パラメータmykey1が”greater-than:2024/9/30”のデータを検索(桁数不統一)

    mykey1=greater-than:2024/9/30

  結果:mykey1=2024/10/01を持つticket_idはヒットしない

例2) mykey2=130でファイルアップロード済の場合

  • 検索用パラメータmykey2が”greater-than:1200”のデータを検索

    mykey2=greater-than:1200

  結果:mykey2=130を持つticket_idがヒットする

  • 検索用パラメータmykey2が”less-than:1200”のデータを検索

    mykey2=less-than:1200

  結果:mykey2=130を持つticket_idはヒットしない

参照

Apache Tomcatに配備されたAPIエンドポイント(相対URI)は、Apache Tomcatの設定により異なります。

Apache Tomcatに配備されたAPIエンドポイント(相対URI)の確認方法については、Apache Tomcatのオンラインマニュアルなどを参照してください。

2.5.3.3 レスポンス設計

2.5.3.3.1 レスポンスフォーマット

項目

備考

HTTPステータス

int(3桁)

正常時200、異常時は後述

HTTPレスポンスヘッダ

X-Request-Id

リクエストID

リクエストを一意に示す値

X-Frame-Options

DENY

X-Content-Type-Options

nosniff

X-XSS-Protection

1; mode=block

Cache-Control

キャッシュに関する情報

Content-Type

application/json;charset=UTF-8

Transfer-Encoding

符号化方式

Date

日付

HTTPレスポンスボディ

ticket_id

ticket_id一覧

JSON配列 (要素はstring)

データダウンロードAPIで利用

例)
HTTP/1.1 200
X-Request-Id: 9561c9b8-125e-405b-9951-2fed010bcc88
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Wed, 26 Jan 2022 02:53:22 GMT

{"ticket_id":["xxxxxxxxxxxxxxxxxxxx","xxxxxxxxxxxxxxxxxxxx","xxxxxxxxxxxxxxxxxxxx"]}
2.5.3.3.2 HTTPステータスコード

HTTPステータスコード

メッセージ

利用場面

200

OK

リクエストの処理に成功した

400

Bad Request

リクエスト違反(Content-Typeが空など)や他の400番台が適さない

401

Unauthorized

認証されていない、または認証に失敗した

403

Forbidden

認証以外の理由でリソースへアクセスできない

404

Not Found

サーバがリクエストされたリソースを発見できない

405

Method Not Allowed

指定以外のHTTPメソッドを指定された

408

Request Time-out

リクエストがタイムアウトした

415

Unsupported Media Type

サポートしていないメディアタイプが指定された

500

Internal Server Error

APIで障害が発生した

503

Service Unavailable

APIが一時的に処理を行うことができない

2.5.3.4 メッセージボディ

HTTPステータスコード

メッセージボディ

200

リソース内容を表示

400/500番台

エラーコードと説明文を表示

2.5.3.5 エラーメッセージ

形式

分類

内容

code

エラーの詳細な種類(HTTPステータスコードではない)

message

エラーメッセージ本文

例)
HTTP/1.1 400
X-Request-Id: b07d1cfe-00ac-4c95-9e6f-fe110ff401dd
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Tue, 08 Jun 2021 17:56:21 GMT
Connection: close

{"error_codes":[{"code":"103","message":"Invalid dst location code."}]}

エラーリスト

HTTPステータスコード

エラーコード

内容

400

001

リクエストボディに誤りがある

400

002

情報区分コードの値が設定されていない

400

003

発送元拠点コードの値が設定されていない

400

004

発送先拠点コードの値が設定されていない

400

101

情報区分コードの値が不正である

400

102

発送元拠点コードの値が不正である

400

103

発送先拠点コードの値が不正である

400

105

取得済みフラグの値が不正である

400

106

検索範囲の始点日時の値が不正である

400

107

検索範囲の終点日時の値が不正である

401

201

認証用トークンによる認証に失敗した

403

202

アクセスが許可されていないユーザーのアクセスによる認可エラー

404

203

存在しないデータにアクセスした

405

206

指定以外のHTTPメソッドを指定された

408

204

データへのアクセスがタイムアウトした

413

205

リクエストボディのサイズが上限値を超えた

500

301

予期せぬエラーが発生した

500

303

予期せぬエラーが発生した

503

303

API側の不具合によるエラー

2.5.3.6 キャッシュ

キャッシュをさせない。(Pragma, Cache-Controlの2種類で指定)

例)Pragma: no-cache, Cache-Control: no-cache

2.5.3.7 注意事項