FrontPage

DBAPI/バッチ検索

API情報

名称食品検索
APIバージョン2
認証タイプなし
URLhttps://(APIサーバー名)/services/api2/(アクセスコード)/dbbatch/(コマンド)/
MethodPOST
リクエストボディ形式JSON
データ更新頻度目安毎日

概要

条件を指定して、バッチ処理により食品を検索する。 カスタム食品検索より実行時間がかかるが、自由な条件で食品を検索できる。返却数も設定により無制限にできる。

アクセス手順

使用は以下の手順を実行する。

トークン使用回数制限が設定されている場合、手順queryでは使用回数が加算される。
それ以外の手順は、使用回数は加算されない。

手順 query

検索に必要なクエリーをjsonで記述し、リクエストボディにセットしてURLにPOSTで送信する。

コマンドquery
URLhttps://(APIサーバー名)/services/api2/(アクセスコード)/dbbatch/query/
トークン使用回数カウントあり

クエリーのプロパティ一覧

区分パラメータ名内容形式または許容値説明・省略可否など
定数verパラメーターオブジェクトのバージョン数値必須・1固定
定数typeパラメーターオブジェクトのタイプ数値必須・query固定
フィルターinword検索テキスト文字列テキスト検索語
フィルターincond検索テキストの条件許容値 and/orテキスト検索語が複数の場合の条件
フィルターmatchingテキスト検索タイプ許容値 boolean/naturallang/naturallqeboolean=ブール全文検索/naturallang=自然言語全文検索/naturallqe=クエリー拡張全文検索
フィルターexword除外テキスト文字列ブール全文検索での除外語
フィルターfiltersnメーカー名フィルタ文字列指定されたメーカー名のみ抽出
フィルターfiltersn_matchメーカー名フィルタの条件許容値 and/orメーカー名フィルタが複数の場合の条件
フィルターflagsnメーカー名付きフラグ許容値 yes/noyes=メーカー名付きのみ/no=メーカー名なしのみ
フィルターexelement除外構成要素食品オブジェクトID指定された食品オブジェクトIDを構成要素に持つ食品を除外
フィルターinelement絞込構成要素食品オブジェクトID指定された食品オブジェクトIDを構成要素に持つ食品のみを抽出
フィルターextargetobj除外食品食品オブジェクトID指定された食品オブジェクトIDを結果から除外
フィルターfiltercatNカテゴリー階層マッチ文字列カテゴリー文字列に完全一致したもののみ抽出。N=1~3
フィルターfilter_stuff栄養素フィルターフィルターオブジェクトの配列栄養素の上限・下限等を指定して抽出。最大5個まで。
ソートsort_idソート栄養素コード栄養素コード結果を指定した栄養素でソートする
ソートsort_dirソート方向許容値 asc/descasc=昇順/desc=降順 sort_idが指定されている場合のみ有効
出力制御startpos開始ポジション数値取得データ開始位置
出力制御item取得数数値取得データ数
出力制御format出力形式許容値 json/csv出力データの形式
出力制御callback_methodコールバック方式許容値 poll/pushpoll=クライアントがstatusでpollingする/push=終了時指定したURLにアクセス
出力制御callback_urlコールバックURLURL(https限定)終了時にアクセスするURL。callback_method=pushの時のみ有効
出力制御callback_paramコールバックパラメータ文字列アクセス追加パラメータ。callback_method=pushの時のみ有効
出力制御encryption暗号化制御有効時1暗号化制御が「オプションに従う」の場合、暗号化の実施を指定
出力制御split出力分割数値出力結果数が多い場合、指定の数毎に結果を分割する。
入力制御ownerexclusive特定オーナー専有食品を検索に含むBOOL値特定オーナー専有食品の閲覧権利がある場合、結果に特定オーナー専有を含むようにする

特記事項
startpos = クエリー内容で抽出された内容を0から始まる行とし、指定した行から開始する
inword,exword,filtersn = 複数記述する場合は半角スペースで区切って列挙
exword = ブール全文検索でのみ使用可
flagsn = 「商品」「外食」「テイクアウト」はメーカー名無しとして扱う
exelement,inelement = 構成要素情報がない場合その食品自身を対象とする
exelement,inelement,extargetobj = 複数記述する場合は半角スペースで区切って列挙
callback_url = 別途アカウント作成時に指定されたURLのみに対してアクセスを発行できる
split = 最大100分割までに制限され、超えた部分は破棄される

フィルターオブジェクト

パラメータ名内容形式省略可否など
verフィルターオブジェクトのバージョン数値必須・1固定
typeフィルターオブジェクトのタイプ数値必須・filter_stuff固定
stuffid対象栄養素栄養素コード必須・対象の栄養素コード
upper栄養素の上限数値upper/lower/existのいずれか1つ以上必須
lower栄養素の下限数値upper/lower/existのいずれか1つ以上必須
exist栄養素の有無include/excludeinclude=存在するもののみ/exclude=存在しないもののみ
upper/lower/existのいずれか1つ以上必須

クエリーのサンプル

{
 "ver": 1,
 "type": "query",
 "inword": "カツ カレー",
 "incond": "and",
 "matching": "boolean",
 "exword": "チキン",
 "sort_id": "stuff_e",
 "sort_dir": "desc",
 "filter_stuff": [
   {
     "ver": 1,
     "type": "filter_stuff",
     "stuffid": "carbo",
     "upper": 100,
     "lower": 20
   }
 ]
}

レスポンス

JSONでレスポンスが返却される。

パラメータ名内容
resultboolean成功時true/失敗時false
batchidstring(成功時)バッチID
reasonstring(失敗時)参考情報

レスポンス例

{
 "result":true,
 "batchid":"INOYGW2NWpMaXcaqCr0Sw7WLisYu2HExwmhk2nef0JEiqP9rjmevXzuIj9xxiaLa2zdzSq849owda6y9612KIX6
hcfmU5j6h5h7vTUxiKGLhwGTQnmlskNiyNClf2Vh1"
}

手順 status

バッチIDを送信し、ステータスを取得する。

コマンドstatus
URLhttps://(APIサーバー名)/services/api2/(アクセスコード)/dbbatch/status/
トークン使用回数カウントなし

パラメーター一覧

パラメータ名内容形式省略可否など
batchidバッチID文字列必須

クエリーのサンプル

{
 "batchid": "INOYGW2NWpMaXcaqCr0Sw7WLisYu2HExwmhk2nef0JEiqP9rjmevXzuIj9xxiaLa2zdzSq849owda6y9612KI
X6hcfmU5j6h5h7vTUxiKGLhwGTQnmlskNiyNClf2Vh1"
}

レスポンス

JSONでレスポンスが返却される。ステータスが10(完了)またはエラー(90)が返されると、バッチ処理は完了となる。任意の間隔で繰り返しアクセスし、完了を待つ。

パラメータ名内容
resultboolean成功時true/失敗時false
batchidstringバッチID
statusinegertステータス
ldatedatetime情報の最終更新日時
infostring追加情報

status
= 1:初期化済み
= 2:処理開始
= 3:クエリー実行中
= 4:データ取り出し中
= 10:完了
= 90:エラー

レスポンス例

{
 "result":true,
 "batchid":"INOYGW2NWpMaXcaqCr0Sw7WLisYu2HExwmhk2nef0JEiqP9rjmevXzuIj9xxiaLa2zdzSq849owda6y9612KIX
6hcfmU5j6h5h7vTUxiKGLhwGTQnmlskNiyNClf2Vh1",
 "status":10,
 "ldate":"2022\/10\/26 09:24:37",
 "info":"done"
}

手順 getinfo

ステータスが10(完了)となった処理のバッチIDを送信し、結果データセットを取得する。

コマンドgetinfo
URLhttps://(APIサーバー名)/services/api2/(アクセスコード)/dbbatch/getinfo/
トークン使用回数カウントなし

パラメーター一覧

パラメータ名内容形式省略可否など
batchidバッチID文字列必須

クエリーのサンプル

{
 "batchid": "INOYGW2NWpMaXcaqCr0Sw7WLisYu2HExwmhk2nef0JEiqP9rjmevXzuIj9xxiaLa2zdzSq849owda6y9612KI
X6hcfmU5j6h5h7vTUxiKGLhwGTQnmlskNiyNClf2Vh1"
}

レスポンス

JSONでレスポンスが返却される。結果データセットは、データ完成日時から24時間保持される。
splitオプション指定時は結果データが分割されるが、結果データオブジェクトの数は100個までに制限され、これを超えた部分は破棄される。

パラメータ名内容
resultboolean成功時true/失敗時false
batchidstringバッチID
datacountinteger結果データ総数
datasetarray結果データオブジェクトの配列
edatedatetimeデータ完成日時

結果データオブジェクト

パラメータ名内容
indexintegerデータ番号
sizeintegerダウンロードデータサイズ
formatstring出力データ形式
plainsizeinteger復号時データサイズ(暗号化時のみ)
encryptionboolean暗号化有無(暗号化時のみ)

レスポンス例

{
 "result":true,
 "batchid":"INOYGW2NWpMaXcaqCr0Sw7WLisYu2HExwmhk2nef0JEiqP9rjmevXzuIj9xxiaLa2zdzSq849owda6y9612KIX
6hcfmU5j6h5h7vTUxiKGLhwGTQnmlskNiyNClf2Vh1",
 "datacount":2,
 "dataset":[
  {
   "index":1,
   "size":14477,
   "format":"json"
  },
  {
   "index":2,
   "size":24510,
   "format":"json"
  }
 ],
 "edate":"2022\/10\/26 09:24:37"
}

手順 getdata

手順getinfoのdataset配下にある各データをダウンロードする。

コマンドgetdata
URLhttps://(APIサーバー名)/services/api2/(アクセスコード)/dbbatch/getdata/
トークン使用回数カウントなし

パラメーター一覧

パラメータ名内容形式省略可否など
batchidバッチID文字列必須
indexデータ番号数値必須

クエリーのサンプル

{
 "batchid": "INOYGW2NWpMaXcaqCr0Sw7WLisYu2HExwmhk2nef0JEiqP9rjmevXzuIj9xxiaLa2zdzSq849owda6y9612KIX
6hcfmU5j6h5h7vTUxiKGLhwGTQnmlskNiyNClf2Vh1",
 "index": 1
}

レスポンス

クエリーで指定した形式の結果データが返却される。 jsonフォーマットについてはカスタム食品検索を参照。

レスポンス例

{
 "foods":[
  {
   "name":"\u30cf\u30fc\u30d5\u624b\u4ed5\u8fbc\u307f\u3055\u3055\u307f\u30ab\u30c4\u30ab\u30ec\u3
0fc(CoCo\u58f1\u756a\u5c4b)",
   "objectid":"FOba81d3e148feb3fa486ed74a",
   "unit":400,
   "stuff_e":613.4
  },
  {
  "name":"\u30ab\u30c4\u30ab\u30ec\u30fc\u3046\u3069\u3093(\u306a\u304b\u536f)",
   "objectid":"FO020fc5615440942643ea8686",
   :
 (略)

データの規制

データの種類規制
バッチID半角英数で256文字以内

値渡しの特例

データAPI/カスタム食品文字列検索との互換性のため、クエリーをGETまたはPOSTのフォームパラメーターで渡すことができる。
渡すことができるのは、JSONで記述する際のオブジェクトの最上位層のプロパティであって、値がプリミティブ型(数値,文字列,食品オブジェクトID,バッチIDなど)のものに限られる。
オブジェクト最上位層のプロパティ名をGETまたはPOSTのクエリ名として使用し、それぞれの値をセットする。
フォームパラメーターとJSONリクエストボディを同時に使用することはできない。
この特例は非推奨の機能であり、今後の機能追加に際しては対応されない可能性がある。

{"batchid":"abc0123","index":1} → batchid=abc0123&index=1

splitオプションと結果データセット

検索クエリーの内容によっては結果数が多くなる。このため、splitオプションを使用して、結果を分割して取得することが推奨される。但し、分割した結果の総数が100を超えた場合、超えた部分は破棄されるので、クライアントの処理能力が許す範囲でsplitオプションは大きく設定した方が良い。
splitオプションの推奨値は10000。

curlコマンドを使ったアクセス例

(手順 query)
% curl -X POST \
-H 'Authorization: Bearer 4r0sM63C6t6Wsj9jAM41iIiQpzEtNySPInenKmJXnoTlt4ALF7UAFt1jKau69935fTZGrTQz
UVDIbb97slV5QahfuEA2WucBUBDYDl2rDanYfiZdhrj9cOoT' \
-H 'Content-Type: application/json' \
-d '{"ver":1,"type":"query","inword":"カレー カツ","filter_stuff":[{"ver":1,"type":"filter_stuff",
"stuffid":"stuff_e","upper": 1000,"lower": 800}]}' \
https://apidb-kag-demo07.mobadai.jp/services/api2/demo07/dbbatch/query/
{"result":true,"batchid":"7HLcQizvwZgXFKscw3av2U2aIQEf7IK5Ev24CLfJnHCrtF6ME9J4g0FwsADBuxABFo9gJMa2
rLy3o1XwTfU9F0ajULHk3sFk15xUvZYMQW5WO9X6bxOs9vrkV6Gj1sLm"}

(手順 status)
% curl -X POST \
-H 'Authorization: Bearer 4r0sM63C6t6Wsj9jAM41iIiQpzEtNySPInenKmJXnoTlt4ALF7UAFt1jKau69935fTZGrTQz
UVDIbb97slV5QahfuEA2WucBUBDYDl2rDanYfiZdhrj9cOoT' \
-H 'Content-Type: application/json' \
-d '{"batchid":"7HLcQizvwZgXFKscw3av2U2aIQEf7IK5Ev24CLfJnHCrtF6ME9J4g0FwsADBuxABFo9gJMa2rLy3o1XwTf
U9F0ajULHk3sFk15xUvZYMQW5WO9X6bxOs9vrkV6Gj1sLm"}' \
https://apidb-kag-demo07.mobadai.jp/services/api2/demo07/dbbatch/status/
{"result":true,"batchid":"7HLcQizvwZgXFKscw3av2U2aIQEf7IK5Ev24CLfJnHCrtF6ME9J4g0FwsADBuxABFo9gJMa2
rLy3o1XwTfU9F0ajULHk3sFk15xUvZYMQW5WO9X6bxOs9vrkV6Gj1sLm","status":10,"ldate":"2022\/10\/26 10:19:33
","info":"done"}

(手順 getinfo)
% curl -X POST \
-H 'Authorization: Bearer 4r0sM63C6t6Wsj9jAM41iIiQpzEtNySPInenKmJXnoTlt4ALF7UAFt1jKau69935fTZGrTQz
UVDIbb97slV5QahfuEA2WucBUBDYDl2rDanYfiZdhrj9cOoT' \
-H 'Content-Type: application/json' \
-d '{"batchid":"7HLcQizvwZgXFKscw3av2U2aIQEf7IK5Ev24CLfJnHCrtF6ME9J4g0FwsADBuxABFo9gJMa2rLy3o1XwTf
U9F0ajULHk3sFk15xUvZYMQW5WO9X6bxOs9vrkV6Gj1sLm"}' \
https://apidb-kag-demo07.mobadai.jp/services/api2/demo07/dbbatch/getinfo/
{"result":true,"batchid":"7HLcQizvwZgXFKscw3av2U2aIQEf7IK5Ev24CLfJnHCrtF6ME9J4g0FwsADBuxABFo9gJMa2
rLy3o1XwTfU9F0ajULHk3sFk15xUvZYMQW5WO9X6bxOs9vrkV6Gj1sLm","datacount":1,"dataset":[{"index":1,"siz
e":11661,"format":"json"}],"edate":"2022\/10\/26 10:19:33"}

(手順 getdata)
% curl -X POST \
-H 'Authorization: Bearer 4r0sM63C6t6Wsj9jAM41iIiQpzEtNySPInenKmJXnoTlt4ALF7UAFt1jKau69935fTZGrTQz
UVDIbb97slV5QahfuEA2WucBUBDYDl2rDanYfiZdhrj9cOoT' \
-H 'Content-Type: application/json' \
-d '{"batchid":"7HLcQizvwZgXFKscw3av2U2aIQEf7IK5Ev24CLfJnHCrtF6ME9J4g0FwsADBuxABFo9gJMa2rLy3o1XwTf
U9F0ajULHk3sFk15xUvZYMQW5WO9X6bxOs9vrkV6Gj1sLm","index":1}' \
https://apidb-kag-demo07.mobadai.jp/services/api2/demo07/dbbatch/getdata/
{"foods":[{"name":"\u30c1\u30ad\u30f3\u30ab\u30c4\u30ab\u30ec\u30fc(\u30d8\u30eb\u30b7\u30fc\u30af
\u30e9\u30b9)
...(略)

jQueryを使ったコード例

var url = 'https://apidb-kag-demo07.mobadai.jp/services/api2/demo07/dbbatch/';
var batchid = null;
function step_query(){  //(手順 query)
  $.ajax({
    'type' : 'POST',
    'url' :  url + 'query/',
    'data' : JSON.stringify({
      "ver":1,
      "type":"query",
      "inword":"カレー カツ",
      "filter_stuff":[
        {"ver":1,"type":"filter_stuff","stuffid":"stuff_e","upper": 1000,"lower": 800}
      ]
    }),
    'processData' : false,
  })
  .success( function( resp, status, jqXHR )  // 成功時処理
  {
    if( resp.result ){
      batchid  = resp.batchid;
      step_status();
    }
  })
  .fail( function( jqXHR, status, error )  // 失敗時処理
  {
  });
}

function step_status(){  //(手順 status)
  $.ajax({
    'type' : 'POST',
    'url' :  url + 'status/',
    'data' : JSON.stringify({
      "batchid": batchid
    }),
    'processData' : false,
  })
  .success( function( resp, status, jqXHR )  // 成功時処理
  {
    if( resp.status == 90 ){
      // エラー処理
      return;
    }
    if( resp.status == 10 ){
      step_getinfo();
      return;
    }
    setTimeout(step_status,10000);
  })
  .fail( function( jqXHR, status, error )  // 失敗時処理
  {
  });
}

function step_getinfo(){  //(手順 getinfo)
  $.ajax({
    'type' : 'POST',
    'url' :  url + 'getinfo/',
    'data' : JSON.stringify({
      "batchid": batchid
    }),
   'processData' : false,
  })
  .success( function( resp, status, jqXHR )  // 成功時処理
  {
    if( resp.result ){
      for(var part of resp.dataset ){
        step_getdata(part.index);
      }
    } else {
      // エラー処理
    }
  })
  .fail( function( jqXHR, status, error )  // 失敗時処理
  {
  });
}

function step_getdata(num){  //(手順 getdata)
  $.ajax({
    'type' : 'POST',
    'url' :  url + 'getdata/',
    'data' : JSON.stringify({
      "batchid": batchid,
      "index": num
    }),
    'processData' : false,
  })
  .success( function( resp, status, jqXHR )  // 成功時処理
  {
    //データ処理
  })
  .fail( function( jqXHR, status, error )  // 失敗時処理
  {
  });
}

考慮事項

本APIはクエリーの内容に依存して実行時間が極めて長くなる可能性がある。
また、結果数が多くなる可能性がある。
本APIの返却するデータは、クライアント側で適切にキャッシュ等を行い、アクセス量を低減させることが望ましい。

バージョン

このドキュメントのバージョン情報

Version1
Revision1
Editorwest

トップ   差分 履歴 リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-08-29 (月) 09:06:45