#author("2022-06-13T10:27:45+09:00","","")
[[FrontPage]]

&size(24){API利用ガイド};

#contents

* 事前情報の取得 [#ae05b06f]

IMD食品栄養データAPIの使用に当たっては、以下の各設定情報が必要となる。~
(※使用に際し弊社より発行し、別途通知します)

** APIサーバー名・アクセスコード [#x9d809f5]

APIのエントリポイントは、サーバー名とアクセスコードを使用して構成する。

|APIタイプ|URL|h
|データ系API|https://(サーバー名)/services/api2/(アクセスコード)/(エントリ)|

** アクセス認証 [#p510b423]
APIを利用する上で正しいアクセス元であることを確認するため、アクセス元IPアドレスの制限、Authorizationヘッダーの送出、のいずれかまたは両方が必要である。

*** アクセス元IPアドレスの制限 [#pd81e71b]

APIはIPアドレスによってアクセスを制限する。使用に際しては、アクセス元となるIPアドレスを設定する必要がある。(※弊社にて設定しますのでアドレスをお知らせ下さい)

*** Authorizationヘッダーの送出 [#pd81e71b]

APIはAuthorizationヘッダーによってアクセスを認証する。クライアントは全てのアクセスに際して、HTTPリクエストヘッダーに以下の通りアクセストークンを送出する。(※弊社にてトークンを振りだしますのでご連絡ください)&br;
アクセストークンは、他者に漏れないよう、正しく管理されなければならない。

 Authorization: Bearer (アクセストークン)

Authorizationヘッダーは、typeをBearerとし、credentialsにアクセストークン文字列を指定する。アクセストークンについてはOAuth2.0の仕様に準じ、長さ不定の半角英数記号による文字列とする。&br;
アクセストークンによる認証が成功した場合、HTTPレスポンスコード200を返却する。レスポンスヘッダーに X-MobadaiApi-Authenticated が含まれ、値は true となる。&br;
アクセストークンによる認証に失敗した場合、HTTPレスポンスコード401を返却する。レスポンスヘッダーに X-MobadaiApi-Authenticated は含まれない。

 例:
 $ curl -H 'Authorization: Bearer TVBJb3lvQ2VlbzlVVzZXNUFWZkladXhSVU5hcDQrREp1QWt6Z0hKM21qNU5OaEFsTnpvOXpWUDJ5TytKM0NXUjc2VEdTRG94RVRheVVScmZ6UGxHZzRmaDlqZm9HWm56cEZHTG4yUEx5eTRRWFFRLzlRelRSTmhtL3dLaW9OZU5aejBLS053cXV6bGdNQ0M4MVl4MXZmN21kRlFhQlhRd0pYMFBmZW95UXZkOTBNZ25HR2VPNGZ0Wk1CZmlPcTlJ' \
 -I "https://yourserver.mobadai.jp/services/api2/yourcode/search/custom/json/SAMPLE/"
 HTTP/1.1 200 OK
 Date: Sun, 24 Feb 2019 23:48:58 GMT
 Server: Apache
 Vary: Authorization
 X-MobadaiApi-Authenticated: true
 Content-Length: *****
 :


** httpsのSSL証明書 [#ye265ef0]

httpsのSSL証明書には、Let's Encryptを使用する。発行者の署名を確認する必要がある場合には、[[Let's Encrypt:https://letsencrypt.org/certificates/]] のページからca-certificateを取得できる。

* APIへのアクセス [#f12bbe0e]

** 使用可能なメソッド [#ve87dd44]

メソッドはGETを使用する。

** 必須のリクエストヘッダ [#l0690088]

以下のリクエストヘッダは必ず送出しなければならない。

 Host: (アクセスするAPIのホスト名)

アクセストークンによる認証を用いる場合、以下のリクエストヘッダは必ず送出しなければならない。

 Authorization: (type) (credentials)


** 文字コード [#z68ec85f]

APIで使用する文字コードはUTF-8とする。


** ハッシュ値 [#yc4fc25f]

API中でのハッシュ値の表記は、半角英数0-9a-fを用い、文字列とする。
 例: dc7faf3c5cd4a3d5e67a6c53ac919667d748969c

** オブジェクトID [#yc4fc25f]

API中でのオブジェクトIDの表記は、プレフィックスは"FO"、以降は半角英数0-9a-fを用い、文字列とする。
 例: FO31e1a7b94566d0586903a90a
 
** 日付 [#be833f76]

日付の書式は次の通りとし、タイムゾーンはJSTを用いる。
 "YYYY/MM/DD"
 YYYY: 4桁で表記する西暦
 MM: 2桁で表記する月(01-12)
 DD: 2桁で表記する日(01-31)
 
** 日付時刻 [#sb505a7d]

日付時刻の書式は次の通りとし、タイムゾーンはJSTを用いる。

 "YYYY/MM/DD hh:mm:ss"
 YYYY: 4桁で表記する西暦
 MM: 2桁で表記する月(01-12)
 DD: 2桁で表記する日(01-31)
 hh: 2桁で表記する時(00-23)
 mm: 2桁で表記する分(00-59)
 ss: 2桁で表記する秒(00-59)

** 検索文字列ルール [#u55567aa]

- 英字・数字は半角を用いる(全角英数字は使用されない)
- カナは全角を用いる(半角カナは使用されない)
- 英文字は大文字を用いる(英小文字は使用されない)
- 次の半角記号は用いない
 <>?_,./\;:][+*}{`~=^-)('%$#"!&
- 次の全角記号、全角機種依存文字は用いない
 〇○◇□△▽☆●◆■▲▼★◎◯♂♀〒()
 〔〕[]{}〈〉《》「」『』【】‘’“”
 →←↑↓⇒⇔…‥、。,.・:;?!゛゜´
 `¨^ヽヾゝゞ〃°′″¥$¢£%‰℃Å+
 -±×÷=≒≠≦≧<>≪≫∞∽∝∴∵∈∋
 ⊆⊇⊂⊃∪∩∧∨¬∀∃∠⊥⌒∂∇≡√∫∬
 ─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫
 ┻╋┠┯┨┷┿┝┰┥┸╂#&*@§※〓♯
 ♭♪†‡¶仝~ ̄_―‐∥|/\
 №㏍℡㊤㊥㊦㊧㊨㈱㈲㈹㍾㍽㍼㍻㍉㎜㎝㎞㎎
 ㎏㏄㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻①②
 ③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳ⅠⅡ
 ⅢⅣⅤⅥⅦⅧⅨⅩ
- 絵文字は用いない

* 返値 [#rd31ae9b]

** HTTPレスポンスコード [#xec47999]

エラー時等、アクセスの条件、状態に応じて、返却されるHTTPレスポンスコードは以下の通り。

|代表的な状況|HTTPレスポンスコード|h
|IPアドレス制限による拒否|403|
|アクセストークンによる拒否|401|
|URL又はフォーマット誤り|404|
|アクセスコード誤り|404|
|検索結果が存在しない|200|
|オブジェクトが存在しない|200|
|設定により使用が拒否されている|404|
|システムの内部的エラー等|500|

*** IPアドレス制限によってアクセスが拒否されている場合 [#ia2e0d5e]

IPアドレス制限によってアクセスが拒否されている場合は、HTTPレスポンスコード403が返却される。
 例:
 $ curl -I "https://apiserver-mycode.mobadai.jp/services/api2/mycode/search/custom/json/カレー/0/50/"
 HTTP/1.1 403 Forbidden
 Date: Wed, 09 Dec 2020 20:51:11 GMT
 Server: Apache
 Content-Type: text/html; charset=iso-8859-1

*** アクセストークンによってアクセスが拒否されている場合 [#uc380c70]

アクセストークンによってアクセスが拒否されている場合は、HTTPレスポンスコード401が返却される。
 例:
 $ curl -I "https://apiserver-mycode.mobadai.jp/services/api2/mycode/search/custom/json/カレー/0/50/"
 HTTP/1.0 401 Unauthorized
 Date: Wed, 09 Dec 2020 23:24:28 GMT
 Server: Apache


*** アクセスしているURLまたはアクセスコードが間違っている [#oda5f85e]

アクセスしているURL、アクセスコード、フォーマットが誤っている場合は、HTTPレスポンスコード404が返却される。
 例:
 $ curl -I "https://apiserver-mycode.mobadai.jp/service/api2/mycode/search/custom/json/カレー/0/50/"
 HTTP/1.1 404 Not Found
 Date: Wed, 09 Dec 2020 20:52:22 GMT
 Server: Apache
 Content-Type: text/html; charset=iso-8859-1
 
 $ curl -I "https://apiserver-mycode.mobadai.jp/services/api2/mycobe/search/custom/json/カレー/0/50/"
 HTTP/1.1 404 Not Found
 Date: Wed, 09 Dec 2020 20:53:05 GMT
 Server: Apache
 Content-Type: text/html; charset=iso-8859-1

*** クエリー文字列の誤り [#bd65dbbf]

クエリー文字列の誤り(禁止文字が含まれる等)の場合は、HTTPレスポンスコード400が返却され、エラー情報を含むjsonがレスポンスボディに返却される。
 例:
 $ curl -I "https://api-kag-foodsearch2.mobadai.jp/services/api2/foodsearch/search/custom/json/カレー=そば/0/50/"
 HTTP/1.1 400 Bad Request
 Date: Wed, 09 Dec 2020 20:52:22 GMT
 Server: Apache
 Content-Length: 23

*** 検索結果が存在しない [#l55dc22e]

検索した結果の数が0の場合は、HTTPレスポンスコード200かつ結果が空のjsonがレスポンスボディに返却される。

 例:
 $ curl -I "https://apiserver-mycode.mobadai.jp/services/api2/mycode/search/custom/json/カぬレま8ー/0/50/"
 HTTP/1.1 200 OK
 Date: Wed, 09 Dec 2020 20:53:58 GMT
 Server: Apache
 Content-Length: 12


*** オブジェクトが存在しない [#a08b9efd]

オブジェクトが存在しない場合は、HTTPレスポンスコード200かつ空のjsonがレスポンスボディに返却される。

 例:
 $ curl -I "https://apiserver-mycode.mobadai.jp/services/api2/mycode/detail/json/FOf281333b5c6d0a6b329fba5c/"
 HTTP/1.1 200 OK
 Date: Wed, 09 Dec 2020 22:51:15 GMT
 Server: Apache
 Content-Length: 2

** エラー情報を含むjson [#jb7df444]

エラー情報を含むjsonの書式は以下の通り。

 {
  "v":1,
  "errcd":"(エラー情報)"
 }

|エラー情報|内容|h
|invalidchar|クエリーに使用できない文字が含まれる|


** 疎通確認 [#sda149b5]

アクセスするAPIサーバーのトップレベルに引数なしでアクセスした場合、動作していればjsonを返却するので、疎通確認に使用できる。IPアドレス制限の状態及びAPIサーバー名の確認が可能である。

 例:
 $ curl https://apiserver-mycode.mobadai.jp/
 {"result":false,"reason":"unknown cmd :","product_version":"20200720-1"}


** 返却フォーマット [#zee1b52e]

jsonを使用する。

** 特殊文字 [#dc9e285f]

返却データ中、特殊文字は参照として表記される。参照は、文字実体参照または数値文字参照が使用される。クライアントでは、適切にデコードすることが望ましい。&br;
参考 [[文字参照:https://ja.wikipedia.org/wiki/%E6%96%87%E5%AD%97%E5%8F%82%E7%85%A7]] &br;

例
|&#38;|アンパサンド| &#38;amp; &#38;#62; &#38;#x3E; |
|'|シングルクォート| &#38;apos; &#38;#39; &#38;#x27; |
|&quot;|ダブルクオート| &#38;quit; &#38;#34; &#38;#x22; |
|&lt;|小なり記号| &#38;lt; &#38;#60; &#38;#x3C; |
|&gt;|大なり記号| &#38;gt; &#38;#62; &#38;#x3E; |

トップ   差分 履歴 リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS