intra-mart Accel Platform — Web API Maker プログラミングガイド   第2版 2015-12-01  



Similar documents
intra-mart Accel Platform — 外部ソフトウェア接続モジュール 仕様書   第2版  

機 能 概 要 概 要 平 成 24 年 度 シームレスな 地 域 連 携 医 療 の 実 現 実 証 事 業 に 対 応 するため 地 域 連 携 システム( 能 登 北 部 版 )を 構 築 する 機 能 < 機 能 追 加 変 更 一 覧 > 1. 画 像 連 携 機 能 院 内 で 撮 影

intra-mart Accel Platform — 外部ソフトウェア接続モジュール 仕様書   第3版  

1

Ver 改 訂 日 付 改 訂 内 容 1

SPARQL Finder設置方法

施 工 P お 気 に 入 り データを 活 用 するための 準 備 施 工 パッケージデータをお 気 に 入 りに 登 録 し 単 価 を 閲 覧 するための 方 法 を 説 明 します 1. 施 工 パッケージデータをダウンロードする 施 工 パッケージデータのダウンロードは 下 記 から 行

電子申告簡易マニュアル【所得税実践編】

目 次 1. Web メールのご 利 用 について Web メール 画 面 のフロー 図 Web メールへのアクセス ログイン 画 面 ログイン 後 (メール 一 覧 画 面 ) 画 面 共 通 項 目

HDC-EDI BaseのAny変換における閏年の取り扱いに関する重要なお知らせ

U/Cサーバ 業務システム間転送プログラムインターフェース仕様書

Microsoft Word - ML_ListManager_10j.doc

Office 10 パッケージ版「リンク集」

目 次 遺 失 物 管 理 プログラム 利 用 者 マニュアル 1. 動 作 条 件 遺 失 物 管 理 プログラムのインストール 運 用 の 流 れ 起 動 方 法 操 作 方 法 について 基 本 的 な 操

AGT10 ( Android(TM) 4.1) ファームウェア更新方法

研究者情報データベース

本 日 の 内 容 1. ゲートウェイシステムにより 提 出 する 電 子 ファイル 2. ゲートウェイシステムによる 提 出 方 法 3. 電 子 データとeCTDの 関 係 4. 提 出 形 式 提 出 方 法 に 係 るQ&A 2

MetaMoJi ClassRoom/ゼミナール 授業実施ガイド

Microsoft Word - サンプル _データベースアクセス_.doc

intra-mart Accel Platform — ViewCreator ユーザ操作ガイド   第6版  

目 次 ログイン 方 法... 3 基 本 画 面 構 成... 4 メールサービス... 5 メールサービス 画 面 構 成... 5 アカウント 詳 細 / 設 定... 6 高 機 能 フィルター... 7 ユーザーフィルター 設 定... 8 新 規 フィルターの 追 加... 8 My ホ

PowerPoint プレゼンテーション

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

贈与税 faq

入 札 参 加 資 格 申 請 システム 操 作 マニュアル 入 札 参 加 資 格 の 資 格 有 効 ( 変 更 ) 日 を 迎 えると 追 加 届 の 登 録 ができるようになります ( 入 札 参 加 資 格 申 請 の 定 時 受 付 では いずれかの 申 請 先 団 体 から 入 札 参

XML形式の電子報告書作成に当たっての留意事項

工 事 名 能 代 南 中 学 校 体 育 館 非 構 造 部 材 耐 震 改 修 工 事 ( 建 築 主 体 工 事 ) 入 札 スケジュール 手 続 等 期 間 期 日 期 限 等 手 続 きの 方 法 等 1 設 計 図 書 等 の 閲 覧 貸 出 平 成 28 年 5 月 24 日 ( 火

Microsoft Word - 第3章.doc

PowerPoint プレゼンテーション

目 次 1. 大 学 情 報 データベースシステムの 使 用 方 法 について EXCEL 一 括 登 録 EXCEL ダウンロード 検 索 条 件 の 指 定 プレビュー EXCEL ダウンロード(データ 抽 出 あ

( 運 用 制 限 ) 第 5 条 労 働 基 準 局 は 本 システムの 維 持 補 修 の 必 要 があるとき 天 災 地 変 その 他 の 事 由 によりシステムに 障 害 又 は 遅 延 の 生 じたとき その 他 理 由 の 如 何 を 問 わず その 裁 量 により システム 利 用 者

2 課 題 管 理 ( 科 学 研 究 費 補 助 金 ) 画 面 が 表 示 されます 補 助 事 業 期 間 終 了 後 欄 の[ 入 力 ] をクリックします [ 入 力 ]ボタンが 表 示 されていない 場 合 には 所 属 する 研 究 機 関 の 事 務 局 等 へお 問 い 合 わせく

端 末 型 払 い 出 しの 場 合 接 続 構 成 図 フレッツ グループから 払 出 されたIPアドレス /32 NTT 西 日 本 地 域 IP 網 フレッツ グループ フレッツ グループから 払 出 されたIPアドレス /

工 事 名 渟 城 西 小 学 校 体 育 館 非 構 造 部 材 耐 震 改 修 工 事 ( 建 築 主 体 工 事 ) 入 札 スケジュール 手 続 等 期 間 期 日 期 限 等 手 続 きの 方 法 等 1 設 計 図 書 等 の 閲 覧 貸 出 平 成 28 年 2 月 23 日 ( 火

(Microsoft Word - Excel\211\236\227p2\217\315.docx)

電子申告直前研修会(所得税編)

目 次 1. ログイン/ログアウト 1.1 ログインする p ログアウトする p.3 2. 受 講 一 覧 画 面 p.4 3. 授 業 ページの 閲 覧 3.1 授 業 ページへの 遷 移 p 授 業 資 料 を IT s class.からダウンロードする p

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版  

PowerPoint プレゼンテーション

目 次 1. ログイン ユーザー 登 録 TOP 職 員...8 (1) 職 員 の 名 刺 表 示...8 (2) 職 員 の 名 刺 一 括 ダウンロード...8 (3) 職 員 の 名 刺 帳 から 検 索 検 索...9 (1) 氏 名

<82C582F182B382A2322E3594C5837D836A B2E786C73>

WebAlertクイックマニュアル

01_07_01 データのインポート_エクスポート_1

intra-mart Accel Platform — IM-BloomMaker プログラミングガイド   初版  

操 作 の 手 順 : 個 人 住 民 税 一 括 納 付 / 新 規 依 頼 修 正 複 写 個 人 住 民 税 一 括 納 付 メニュー 個 人 住 民 税 一 括 納 付 新 規 依 頼 修 正 複 写 依 頼 / 委 託 者 情 報 入 力 (P100) 依 頼 修 正 / 委 託 者 情

目 次 1.はじめに 書 式 の 説 明 表 紙 スケジュール 組 入 れ 基 準 併 用 禁 止 薬 併 用 注 意 薬 同 種 同 効 薬 医 師 モニタリング..

PDF閲覧制限システムLight版体験版マニュアル

目 次 1.はじめに 1-1. はじめに 2. 操 作 2-1. 概 要 2-2. 操 作 方 法 ( 調 査 依 頼 の 確 認 ) 2-3. 操 作 方 法 ( 回 答 登 録 ) 2-4. 操 作 方 法 (ワークシート 出 力 ) 2-5. 操 作 方 法 (ワークシート 取 込 ) 3.

Taro-1-14A記載例.jtd

一 覧 表 ( 専 従 者 用 ) YES NOチャート( 専 従 月 額 単 価 用 ) (P.4)を 参 考 にしてください < 直 接 雇 用 者 > 一 覧 表 ( 専 従 者 用 )の 単 価 は 委 託 期 間 中 に 継 続 して 半 年 以 上 当 該 AMED 事 業

Microsoft PowerPoint _リビジョンアップ案内_最終.pptx

1. 業 務 概 要 貨 物 情 報 登 録 済 の 貨 物 に 対 して システムを 介 さずに 行 われた 税 関 手 続 きについて 税 関 が 許 可 承 認 等 を 行 った 旨 を 登 録 する また システムで 行 われた 以 下 の 税 関 手 続 き( 以 下 輸 出 申 告 等

新 生産管理システム ご提案書 2002年10月15日 ムラテック情報システム株式会社

<4D F736F F F696E74202D2082C882E982D982C DD8ED88EE688F882CC82B582AD82DD C668DDA9770>

Basic

2. 事 務 連 絡 者 用 メニュー (1) 登 録 変 更 申 請 委 員 会 メンバー メンバー 個 人 情 報 企 業 情 報 の 変 更 および JIRA 会 員 を 退 会 する 場 合 こ のメニューから 各 種 申 請 を 行 います 申 請 後 変 更 内 容 を JIRA 事 務

2007 Microsoft Corporation. All rights reserved. 本 書 に 記 載 した 情 報 は 本 書 各 項 目 に 関 する 発 行 日 現 在 の Microsoft の 見 解 を 表 明 するものです Microsoft は 絶 えず 変 化 する

ができます 4. 対 象 取 引 の 範 囲 第 1 項 のポイント 付 与 の 具 体 的 な 条 件 対 象 取 引 自 体 の 条 件 は 各 加 盟 店 が 定 めます 5.ポイントサービスの 利 用 終 了 その 他 いかなる 理 由 によっても 付 与 されたポイントを 換 金 すること

<4D F736F F D F93878CA797708F4390B3816A819A95CA8B4C976C8EAE91E682538B4C8DDA97E12E646F6378>

PowerPoint プレゼンテーション

1-1 一覧画面からの印刷

CSV_Backup_Guide

目 次 1 ログインする 1 2 研 修 情 報 を 登 録 する 2 step1 登 録 フォームに 入 力 する 2 step2 プレビューで 入 力 内 容 を 確 認 する 18 step3 下 書 き 保 存 する 20 step4 登 録 する 21 step5 管 理 者 による 承

POWER EGG V2.01 ユーザーズマニュアル ファイル管理編

TIPS - 棚 割 りを 開 始 するまで Liteを 起 動 し 企 業 情 報 の 追 加 を 行 い 棚 割 を 行 う 企 業 の 追 加 をして 下 さい 企 業 情 報 の 追 加 時 に エラーメッセージが 表 示 された 場 合 別 途 TIPS トラブルが 発 生 した 場 合

4 応 募 者 向 けメニュー 画 面 が 表 示 されます 応 募 者 向 けメニュー 画 面 で [ 交 付 内 定 時 の 手 続 を 行 う] [ 交 付 決 定 後 の 手 続 を 行 う]をクリックします 10

5 相 続 時 精 算 課 税 制 度 の 特 例 一 定 の 要 件 を 満 たした 中 古 住 宅 を 取 得 するために 65 歳 未 満 の 直 系 尊 属 から 贈 与 を 受 けた 贈 与 税 について 相 続 時 精 算 課 税 制 度 の 利 用 を 受 けられる 特 例 6 贈 与

<95CA8E A4F C B A C E786C7378>

スライド 1

PowerPoint プレゼンテーション

文科省様式3-2集計オプションマニュアル

SXF 仕 様 実 装 規 約 版 ( 幾 何 検 定 編 ) 新 旧 対 照 表 2013/3/26 文 言 変 更 p.12(1. 基 本 事 項 ) (5)SXF 入 出 力 バージョン Ver.2 形 式 と Ver.3.0 形 式 および Ver.3.1 形 式 の 入 出 力 機 能 を

目 次 電 子 申 請 を 使 用 した 申 請 の 流 れ 1ページ 申 請 書 ( 概 算 保 険 料 申 告 書 )の 作 成 2ページ 作 成 した 申 請 書 の 送 信 31ページ 状 況 照 会 電 子 納 付 を 行 う 62ページ 返 送 書 類 の 取 得 75ページ お 問 い

(表紙)

PowerPoint プレゼンテーション

WEB版「新・相続対策マスター」(ご利用の手引き)

前 書 き 広 域 機 関 システム System for Organization for Cross-regional Coordination of Transmission Operators(OCCTO) rev: 商 標 類 Windows Office Excel

ìäçeãKíˆÅEç◊ë•Åiç≈èIî≈àÛç¸ópÅj

治 験 実 施 管 理 システム NMGCP 向 け Excel 形 式 プロトコール 作 成 手 順 書 V4.0.3 対 応 版 第 1 版 株 式 会 社 富 士 通 アドバンストエンジニアリング All Rights Reserved,Copyright 株 式 会 社 富 士 通 アドバン

Apache Tomcatにおけるクロスサイトリクエストフォージェリ(CSRF)保護メカニズム回避の脆弱性

Microsoft Word - tutorial7-language.docx

<4D F736F F D20819C486F70658F6F93588ED297708AC7979D89E696CA837D836A B E A2E646F63>

以 下 に 手 順 の 流 れを 記 載 します 3ページ 以 降 で 各 項 目 の 手 順 を 説 明 します ( をクリックすると 該 当 ページにジャンプします ) また 15ページに 汎 用 データ 受 入 に 関 する よくあるお 問 い 合 わせをご 紹 介 しています Step1 (

スライド 0

< 入 力 にあたっての 注 意 事 項 > 応 募 基 本 情 報 の 申 請 は 代 表 申 請 方 式 の 場 合 は 代 表 申 請 を 行 う 応 募 者 が 連 名 申 請 方 式 の 場 合 は 連 名 申 請 する 応 募 者 のうちのいずれかの1 者 が 研 究 体 を 代 表 し

V-CUBE One

<4D F736F F D F4390B3208A948C E7189BB8CE F F8C668DDA97702E646F63>

スライド 1

目 次 1. 積 算 内 訳 書 に 関 する 留 意 事 項 1 ページ 2. 積 算 内 訳 書 のダウンロード 3 ページ 3. 積 算 内 訳 書 の 作 成 (Excel 2003の 場 合 ) 6 ページ 4. 積 算 内 訳 書 の 作 成 (Excel 2007の 場 合 ) 13

POWER EGG V2.01 ユーザーズマニュアル グループウェア編

WebMail ユーザーズガイド

「給与・年金の方」からの確定申告書作成編

1. 概 要 Webで 申 込 みした 手 続 きの 内 容 とNEXIでの 手 続 状 況 を Web 申 込 状 況 一 覧 で 確 認 することができます また 各 種 手 続 きにおいて 申 込 みを 完 了 せずに 保 存 状 態 にした 手 続 きを この 一 覧 から 再 開 すること

PowerPoint プレゼンテーション

WEBメールシステム 操作手順書

続 に 基 づく 一 般 競 争 ( 指 名 競 争 ) 参 加 資 格 の 再 認 定 を 受 けていること ) c) 会 社 更 生 法 に 基 づき 更 生 手 続 開 始 の 申 立 てがなされている 者 又 は 民 事 再 生 法 に 基 づき 再 生 手 続 開 始 の 申 立 てがなさ

kyoukai.indd

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版   None

第 40 回 中 央 近 代 化 基 金 補 完 融 資 推 薦 申 込 み 公 募 要 綱 1 公 募 推 薦 総 枠 30 億 円 一 般 物 流 効 率 化 促 進 中 小 企 業 高 度 化 資 金 貸 付 対 象 事 業 の 合 計 枠 2 公 募 期 間 平 成 28 年 6 月 20

1 林 地 台 帳 整 備 マニュアル( 案 )について 林 地 台 帳 整 備 マニュアル( 案 )の 構 成 構 成 記 載 内 容 第 1 章 はじめに 本 マニュアルの 目 的 記 載 内 容 について 説 明 しています 第 2 章 第 3 章 第 4 章 第 5 章 第 6 章 林 地

Transcription:

Copyright 2015 NTT DATA INTRAMART CORPORATION 1 Top

目 次 intra-mart Accel Platform Web API Maker プログラミングガイド 第 2 版 2015-12-01 1. 改 訂 情 報 2. はじめに 2.1. 本 書 の 目 的 2.2. 対 象 読 者 2.3. 注 意 事 項 2.4. サンプルコードについて 2.5. 本 書 の 構 成 3. Web API Maker 概 要 3.1. Web API Maker とは 3.2. Web API Maker の 機 能 3.3. Web API Maker のモジュール 構 成 4. Web API Maker を 利 用 したAPIの 作 成 方 法 4.1. 全 体 の 作 業 の 流 れ 4.2. 前 提 条 件 4.3. ファクトリクラスの 作 成 4.4. サービスクラスの 作 成 4.4.1. サービスクラスの 作 成 < 基 本 > 4.4.2. @Beanについて 4.4.3. セキュアトークンによるトークンチェックを 行 う 4.4.4. 認 可 チェックを 行 う 4.4.5. 返 却 するステータスコードを 指 定 する 4.4.6. 手 動 レスポンスを 返 却 する 4.4.7. APIドキュメントを 登 録 する 4.5. 引 数 戻 り 値 に 指 定 可 能 な 型 4.6. パッケージの 登 録 5. 作 成 したAPIの 利 用 について 5.1. 利 用 方 法 5.2. セッション 管 理 5.3. API 仕 様 を 参 照 する 5.4. Web 上 からAPI 仕 様 を 参 照 し 実 行 する 6. サンプルについて 6.1. サンプルアプリケーションの 仕 様 6.2. サンプルの 資 材 一 覧 2

改 訂 情 報 intra-mart Accel Platform Web API Maker プログラミングガイド 第 2 版 2015-12-01 変 更 年 月 日 変 更 内 容 2015-08-01 初 版 2015-12-01 第 2 版 下 記 を 追 加 変 更 しました Web API Maker を 利 用 したAPIの 作 成 方 法 の サービスクラスの 作 成 < 基 本 > にBasic 認 証 に 関 する 説 明 を 追 記 しました 3

はじめに intra-mart Accel Platform Web API Maker プログラミングガイド 第 2 版 2015-12-01 本 書 の 目 的 本 書 では intra-mart Accel Platform で 提 供 する Web API Maker を 用 いたプログラミング 方 法 や 注 意 点 等 について 説 明 します 説 明 範 囲 は 以 下 の 通 りです Web API Maker の 概 要 基 本 仕 様 Web API Maker を 利 用 したAPIの 作 成 方 法 Web API Maker で 作 成 したAPI 利 用 時 の 注 意 点 対 象 読 者 本 書 は 以 下 の 条 件 を 満 たす 人 を 対 象 としています Web API Maker を 用 いて intra-mart Accel Platform 上 で Web API を 提 供 したい 開 発 者 次 の 内 容 を 理 解 していることが 必 須 となります Javaを 理 解 している 注 意 事 項 1. Web API Maker を 利 用 するにあたり いくつかの 制 限 事 項 が 存 在 します 制 限 事 項 についての 詳 細 は リリースノート 制 限 事 項 を 参 照 してくださ い サンプルコードについて 本 書 に 掲 載 されているサンプルコードは 可 読 性 を 重 視 しており 性 能 面 や 保 守 性 といった 観 点 において 必 ずしも 適 切 な 実 装 ではありません サンプルコードを 参 考 に 開 発 する 場 合 は 上 記 について 十 分 に 注 意 してください 本 書 の 構 成 本 書 は 以 下 のような 内 容 で 構 成 されています Web API Maker 概 要 Web API Maker を 利 用 したAPIの 作 成 方 法 作 成 したAPIの 利 用 について サンプルについて 4

Web API Maker 概 要 Web API Maker とは Web API とは HTTPベースでデータをやりとりするための API です Web API Maker を 利 用 することで intra-mart Accel Platform 上 でWebサービスをシンプルに 実 現 することができます Web API Maker の 機 能 Web API Maker では 以 下 の 機 能 を 提 供 します Java 言 語 のクラス メソッドに 対 してアノテーションを 付 与 することにより 対 象 のクラスをWebサービス プロバイダとして 利 用 可 能 とする 機 能 上 記 のWebサービス プロバイダにWebサービスとしての 仕 様 をJSON 形 式 で 出 力 する 機 能 Web API Maker のモジュール 構 成 Web API Maker は 以 下 のモジュール 構 成 になります Web API Maker Web API Maker OAuth 認 証 モジュール Web API Maker でOAuth2による 認 証 を 行 う 場 合 に 必 要 となります 5

Web API Maker を 利 用 したAPIの 作 成 方 法 項 目 全 体 の 作 業 の 流 れ 前 提 条 件 ファクトリクラスの 作 成 サービスクラスの 作 成 サービスクラスの 作 成 < 基 本 > @Beanについて セキュアトークンによるトークンチェックを 行 う 認 可 チェックを 行 う 返 却 するステータスコードを 指 定 する 手 動 レスポンスを 返 却 する APIドキュメントを 登 録 する 引 数 戻 り 値 に 指 定 可 能 な 型 パッケージの 登 録 全 体 の 作 業 の 流 れ Web API Maker を 利 用 したAPIの 作 成 は 以 下 の 流 れで 行 います ファクトリクラスの 作 成 ファクトリクラスおよびサービスクラスのインスタンスを 生 成 するクラスを 作 成 します サービスクラスの 作 成 Webサービス プロバイダとしてのインタフェースの 決 定 任 意 の 処 理 を 実 装 します パッケージの 登 録 作 成 したファクトリクラスを 列 挙 します 前 提 条 件 Web API Maker を 利 用 しAPIを 作 成 するには 以 下 の 前 提 条 件 があります 提 供 するAPIのファクトリクラス サービスクラス サービスクラスのインタフェースに 含 まれるモデルはすべてpublicである 必 要 があります モデルを 利 用 した 場 合 に 有 効 となるプロパティは 対 となる getter, setter があるメンバのみです モデルは 引 数 無 しのコンストラクタを 提 供 する 必 要 があります データの 受 け 渡 しにXMLを 利 用 する 場 合 でインタフェースにモデルが 含 まれる 場 合 そのモデルクラスに@XmlRootElementアノテーションを 付 与 する 必 要 があります モデルのプロパティにMapがあり そのvalueの 型 がObjectである 場 合 は 値 に 格 納 される 値 が 形 式 毎 に 異 なる 可 能 性 があります データの 受 け 渡 しにJSONを 利 用 する 場 合 は Boolean, BigDecimal, String になります データの 受 け 渡 しにXMLを 利 用 する 場 合 は String のみになります 注 意 データの 受 け 渡 しに 関 しては 利 用 方 法 を 参 照 してください ファクトリクラスの 作 成 ファクトリクラス および サービスクラスのインスタンス 生 成 を 行 うファクトリクラスを 作 成 します ファクトリクラスでは 以 下 の サービスプロバイダアノテーション を 利 用 します Web API Maker ではサービスクラスに 付 与 されているアノテーションを 元 にWebサービス プロバイダとしての 仕 様 が 決 定 します 仕 様 の 決 定 はファクトリクラスの @ProvideService が 付 与 されているメソッドの 戻 り 値 のクラスに 付 与 されているアノテーションにて 決 定 します サービスプロバイダアノテーションの 種 類 6

@WebAPIMaker Web API Makder 機 能 を 利 用 することを 意 味 するアノテーションです ファクトリクラスのクラスに 付 与 します @ProvideFactory @ProvideService ファクトリクラスのインスタンスの 取 得 元 であることを 意 味 するアノテーションです ファクトリクラスのファクトリインスタンス 取 得 メソッドに 付 与 します 付 与 されたメソッドは 一 度 のみ 実 行 され ファクトリクラスのインスタンスは Web API Maker 内 部 でキャッシュさ れます サービスクラスのインスタンスの 取 得 元 であることを 意 味 するアノテーションです ファクトリクラスのサービスインスタンス 取 得 メソッドに 付 与 します このアノテーションを 付 与 されたメソッドは 提 供 するWebサービス プロバイダを 実 行 する 度 に 呼 び 出 されます メソッドを 作 りこむことでサービスクラスのインスタンスのライフサイクルを 管 理 することが 可 能 です ファクトリクラスの 実 装 例 は 以 下 の 通 りです package jp.co.intra_mart.sample.web_api_maker.pet_shop.service; import jp.co.intra_mart.foundation.web_api_maker.annotation.providefactory; import jp.co.intra_mart.foundation.web_api_maker.annotation.provideservice; import jp.co.intra_mart.foundation.web_api_maker.annotation.webapimaker; @WebAPIMaker public class PetServiceFactory { @ProvideFactory public static PetServiceFactory getfactory() { return new PetServiceFactory(); @ProvideService public PetService getservice() { return new PetService(); サービスクラスの 作 成 サービスクラスでは アノテーションによるWebサービス プロバイダとしてのインタフェースの 決 定 任 意 の 処 理 を 実 装 します 提 供 したいWebサービスをメソッドとして 記 述 します ここではサービスクラスの 作 成 方 法 と 各 アノテーションに 関 して 説 明 します サービスクラスの 作 成 < 基 本 > サービスクラスは 以 下 の 手 順 で 作 成 します 1. 認 証 方 式 を 決 定 して 対 応 する 認 証 アノテーション をサービスクラスに 付 与 します 認 証 アノテーションは API 実 行 時 の 認 証 方 式 を 指 定 するアノテーション 群 です 認 証 アノテーション 概 要 @IMAuthentication @BasicAuthentication @OAuth Cookieを 利 用 したアクセスを 行 う 場 合 に 付 与 するアノテーション 特 別 な 認 証 処 理 を 行 わず Cookieに 紐 づくセッションの 認 証 状 態 でアクセスします Basic 認 証 による 認 証 行 う 場 合 に 付 与 するアノテーション /basic + 後 述 の @Path のvalueの 値 がBasic 認 証 を 利 用 したエンドポイントとなります /basic の 文 字 列 はアノテーションの 属 性 で 変 更 する 事 が 可 能 です OAuth2による 認 証 を 行 う 場 合 に 付 与 するアノテーション /oauth + 後 述 の @Path のvalue 値 がOAuth 認 証 を 利 用 したエンドポイントとなります /oauth の 文 字 列 はアノテーションの 属 性 で 変 更 する 事 が 可 能 です 別 途 scopeの 定 義 を 行 う 必 要 があります 7

コラム intra-mart Accel Platform のOAuth 認 証 については OAuth 認 証 モジュール 仕 様 書 を 参 照 してください OAuthのscope 定 義 に ついては 設 定 ファイルリファレンス - クライアントのアクセス 範 囲 設 定 を 参 照 してください コラム Basic 認 証 では 以 下 のような 環 境 で 認 証 時 にテナントを 指 定 することができます バーチャルテナントによる 複 数 テナントを 利 用 していて リクエスト 情 報 を 利 用 したテナント 自 動 解 決 機 能 を 利 用 していない 環 境 上 記 環 境 では 認 証 時 にユーザコードとして テナントID\ユーザコード を 指 定 すると 指 定 したテナントに 対 して 認 証 を 行 います ユーザコードとしてユーザコードのみを 指 定 すると デフォルトテナントに 対 して 認 証 を 行 います 2. 各 メソッドにアクセスするURLを 決 め パスアノテーション をメソッドに 付 与 します パスアノテーションはリクエストを 送 る 際 にURLにバインドするパスを 指 定 するアノテーションです パスアノテーション 概 要 @Path /xxx 形 式 でパスを 指 定 します パスに {xxx 形 式 を 含 めることでxxxの 値 をパラメータとして 利 用 可 能 で す 3. 受 け 付 ける HTTP メソッドに 対 応 する HTTPメソッドアノテーション をメソッドに 付 与 します パスアノテーションを 付 与 したメソッドにて 許 可 するHTTPメソッドを 指 定 します 指 定 するアノテーションによってメソッドで 利 用 可 能 な 引 数 の 型 が 異 なります 詳 しくは 後 述 の 引 数 戻 り 値 に 指 定 可 能 な 型 を 参 照 してください パスアノテーションを 付 与 したメソッドには1つ 以 上 付 与 する 必 要 があります HTTPメソッドアノテーション 概 要 @GET @PUT @POST @DELETE GETメソッドを 受 け 付 けます このアノテーションを 付 与 した 場 合 エンティティボディを 利 用 するパラメータは 利 用 できませ ん PUTメソッドを 受 け 付 けます POSTメソッドを 受 け 付 けます DELETEメソッドを 受 け 付 けます このアノテーションを 付 与 した 場 合 エンティティボディを 利 用 するパラメータは 利 用 できませ ん 4. メソッドに 引 数 がある 場 合 値 をどのように 受 け 取 るかに 対 応 する パラメータアノテーション をメソッドに 付 与 します HTTPメソッドやパラメータアノテーションごとに 受 け 取 り 可 能 な 型 が 異 なります 詳 しくは 後 述 の 引 数 戻 り 値 に 指 定 可 能 な 型 を 参 照 してください パラメータアノテーション 概 要 @Parameter @Header @Variable @Body @Bean クエリパラメータまたはフォームパラメータ(マルチパート 含 む)として 引 数 情 報 を 受 け 付 けます パラメータ 名 を 指 定 する 必 要 があります メソッド 内 で 同 一 のパラメータ 名 を 利 用 できません リクエストヘッダの 値 を 引 数 情 報 として 受 け 付 けます パラメータ 名 を 指 定 する 必 要 があります メソッド 内 で 同 一 のパラメータ 名 を 利 用 できません パラメータの 値 を 引 数 情 報 として 受 け 付 けます @Path アノテーションに 指 定 したパス 値 にパラメータの 形 式 を 含 める 必 要 があります パラメータ 名 を 指 定 する 必 要 があります メソッド 内 で 同 一 のパラメータ 名 を 利 用 できません エンティティボディの 内 容 を 引 数 情 報 として 受 け 付 けます 上 記 のパラメータを 一 括 して1つのBeanとして 受 け 取 るアノテーション @Beanが 指 定 された 型 が 持 つメンバーにパラメータアノテーションが 付 与 されている 場 合 それらをバ インドした 状 態 のBeanが 利 用 できます 詳 細 は 後 述 の @Beanについて を 参 照 してください 8

アノテーションなし intra-mart Accel Platform Web API Maker プログラミングガイド 第 2 版 2015-12-01 各 引 数 にnullまたは 初 期 値 (プリミティブbooleanだとfalse)が 必 ずわたるようになります HttpServletRequestおよびHttpServletResponseを 指 定 した 場 合 リクエスト 中 のそれらのインスタン スがバインドされるため 主 にリクエストやレスポンスを 直 接 参 照 したい 場 合 に 利 用 します @Required 実 行 するメソッドに 渡 す 引 数 の 値 が 必 須 であることを 表 すアノテーションです 上 記 のアノテーションと 組 み 合 わせて 利 用 します サービスクラスの 実 装 例 は 以 下 の 通 りです package jp.co.intra_mart.sample.web_api_maker.pet_shop.service; import jp.co.intra_mart.foundation.web_api_maker.annotation.body; import jp.co.intra_mart.foundation.web_api_maker.annotation.delete; import jp.co.intra_mart.foundation.web_api_maker.annotation.get; import jp.co.intra_mart.foundation.web_api_maker.annotation.imauthentication; import jp.co.intra_mart.foundation.web_api_maker.annotation.post; import jp.co.intra_mart.foundation.web_api_maker.annotation.put; import jp.co.intra_mart.foundation.web_api_maker.annotation.path; import jp.co.intra_mart.foundation.web_api_maker.annotation.required; import jp.co.intra_mart.foundation.web_api_maker.annotation.variable; import jp.co.intra_mart.sample.web_api_maker.pet_shop.model.pet; @IMAuthentication public class PetService { @Path("/sample/pet-shop/pet/{id") @DELETE public void delete(@required @Variable(name = "id") final int id) throws NotFoundException { for (final Pet p : ConstantData.PETS) { if (p.getid() == id) { // delete return; @Path("/sample/pet-shop/pet/{id") @GET public Pet get(@required @Variable(name = "id") final int id) throws NotFoundException { for (final Pet pet : ConstantData.PETS) { if (pet.getid() == id) { return pet; @Path("/sample/pet-shop/pets") @POST public void register(@required @Body final Pet pet) { // register @Path("/sample/pet-shop/pet/{id") @PUT public void update(@required @Variable(name = "id") final int id, @Required @Body final Pet pet) throws NotFoundException { for (final Pet p : ConstantData.PETS) { if (p.getid() == id) { // update return; 9

注 意 intra-mart Accel Platform Web API Maker プログラミングガイド 第 2 版 2015-12-01 サービスクラスはインタフェースでもクラスでも 動 作 します @Beanについて @Beanを 利 用 することで 複 数 のパラメータを1つのBeanでまとめて 受 け 取 ることができます @Beanを 付 与 された 引 数 のクラスが 持 つメンバーのSetterメソッドに 付 与 されているアノテーションによりメンバーの 値 をリクエストにバインドします @Beanを 付 与 するクラスは 以 下 を 満 たす 必 要 があります publicなクラスである publicな 引 数 なしのコンストラクタが 存 在 する @Beanに 付 与 されたメソッドが 以 下 を 満 たす 場 合 1つのメンバとして 扱 われます 対 となるgetter, setterが 存 在 する メソッド 名 がgetXxxx(booleanの 場 合 に 限 りisXxxx)である 引 数 なしでかつ 戻 り 値 を 持 つメソッドが 存 在 する メソッド 名 がsetXxxxである 引 数 が1つであり 戻 り 値 が 無 いメソッドが 存 在 する getterの 引 数 の 型 戻 り 値 の 型 が 同 一 である staticではない publicである setterメソッドにパラメータアノテーションが 付 与 されている(ただし @Beanは 利 用 不 可 です) 実 装 例 は 以 下 の 通 りです 10

package jp.co.intra_mart.sample.web_api_maker.pet_shop.service; import jp.co.intra_mart.foundation.web_api_maker.annotation.bean; import jp.co.intra_mart.foundation.web_api_maker.annotation.body; import jp.co.intra_mart.foundation.web_api_maker.annotation.imauthentication; import jp.co.intra_mart.foundation.web_api_maker.annotation.put; import jp.co.intra_mart.foundation.web_api_maker.annotation.path; import jp.co.intra_mart.foundation.web_api_maker.annotation.required; import jp.co.intra_mart.foundation.web_api_maker.annotation.variable; import jp.co.intra_mart.sample.web_api_maker.pet_shop.meta.petshop; import jp.co.intra_mart.sample.web_api_maker.pet_shop.meta.pettag; import jp.co.intra_mart.sample.web_api_maker.pet_shop.model.pet; @IMAuthentication public class PetService { public static class BeanClass { public int id; public Pet pet; public int getid() { return id; public Pet getpet() { return pet; @Required @Variable(name = "id") public void setid(final int id) { this.id = id; @Required @Body public void setpet(final Pet pet) { this.pet = pet; @Path("/sample/pet-shop/pet/{id") @PUT public void update(@bean final BeanClass bean) throws NotFoundException { for (final Pet p : ConstantData.PETS) { if (p.getid() == bean.id) { // update return; セキュアトークンによるトークンチェックを 行 う intra-mart Accel Platform ではセキュアトークンを 利 用 することにより 生 成 されるトークンに 対 してサーバ 側 でトークンチェック 処 理 を 行 い CSRF 対 策 を 行 うことができます セキュアチェックアノテーションを 利 用 することで Web API 実 行 前 にセキュアトークンによるトークンチェックを 行 うかどうかを 指 定 することができます セキュアチェックアノテーション 概 要 11

@Secured intra-mart Accel Platform Web API Maker プログラミングガイド 第 2 版 2015-12-01 Web API 実 行 前 にセキュアトークンによるトークンチェックを 行 います このアノテーションはメソッドに 付 与 可 能 です トークンの 発 行 は SecureTokenManager で 行 います トークンの 発 行 とWeb APIへのリクエストは 同 一 のセッション 内 で 行 う 必 要 があります OAuthを 利 用 したWeb APIの 場 合 このアノテーションは 無 視 されます このアノテーションを 付 与 されたWeb APIを 実 行 する 場 合 クライアントはリクエストヘッダ X-Intramart- Secure-Token にトークンを 含 める 必 要 があります トークンチェックにより トークンが 妥 当 ではない 場 合 HTTPステータスコード403が 返 却 されます 実 装 例 は 以 下 の 通 りです 12

package jp.co.intra_mart.sample.web_api_maker.pet_shop.service; import jp.co.intra_mart.foundation.web_api_maker.annotation.body; import jp.co.intra_mart.foundation.web_api_maker.annotation.delete; import jp.co.intra_mart.foundation.web_api_maker.annotation.get; import jp.co.intra_mart.foundation.web_api_maker.annotation.imauthentication; import jp.co.intra_mart.foundation.web_api_maker.annotation.post; import jp.co.intra_mart.foundation.web_api_maker.annotation.put; import jp.co.intra_mart.foundation.web_api_maker.annotation.path; import jp.co.intra_mart.foundation.web_api_maker.annotation.required; import jp.co.intra_mart.foundation.web_api_maker.annotation.secured; import jp.co.intra_mart.foundation.web_api_maker.annotation.variable; import jp.co.intra_mart.sample.web_api_maker.pet_shop.model.pet; @IMAuthentication public class PetService { @Path("/sample/pet-shop/pet/{id") @DELETE @Secured public void delete(@required @Variable(name = "id") final int id) throws NotFoundException { for (final Pet p : ConstantData.PETS) { if (p.getid() == id) { // delete return; @Path("/sample/pet-shop/pet/{id") @GET @Secured public Pet get(@required @Variable(name = "id") final int id) throws NotFoundException { for (final Pet pet : ConstantData.PETS) { if (pet.getid() == id) { return pet; @Path("/sample/pet-shop/pets") @POST @Secured public void register(@required @Body final Pet pet) { // register @Path("/sample/pet-shop/pet/{id") @PUT @Secured public void update(@required @Variable(name = "id") final int id, @Required @Body final Pet pet) throws NotFoundException { for (final Pet p : ConstantData.PETS) { if (p.getid() == id) { // update return; 認 可 チェックを 行 う 認 可 アノテーションを 利 用 することで Web API 実 行 前 にIM-Authzによる 認 可 チェックを 行 うことができます 13

認 可 アノテーション 概 要 @Authz Web API 実 行 前 にIM-Authzによって 指 定 した 認 可 リソース(または 認 可 マッパー)にて 認 可 判 断 を 行 いま す 予 め 認 可 リソースを 準 備 する 必 要 があります このアノテーションはクラスまたはメソッドに 付 与 可 能 です クラスに 付 与 した 場 合 すべてのメソッドに 対 して 認 可 が 有 効 になります クラス メソッド 両 方 に 付 与 されて いる 場 合 メソッドの 指 定 が 優 先 されます 認 可 によりWeb APIの 実 行 する 権 限 がないと 判 断 された 場 合 HTTPステータスコード401または403が 返 却 されます 未 認 証 の 場 合 に401 認 証 された 状 態 で 権 限 がない 場 合 は403となります 実 装 例 は 以 下 の 通 りです 14

package jp.co.intra_mart.sample.web_api_maker.pet_shop.service; import jp.co.intra_mart.foundation.authz.annotation.authz; import jp.co.intra_mart.foundation.web_api_maker.annotation.body; import jp.co.intra_mart.foundation.web_api_maker.annotation.delete; import jp.co.intra_mart.foundation.web_api_maker.annotation.get; import jp.co.intra_mart.foundation.web_api_maker.annotation.imauthentication; import jp.co.intra_mart.foundation.web_api_maker.annotation.post; import jp.co.intra_mart.foundation.web_api_maker.annotation.put; import jp.co.intra_mart.foundation.web_api_maker.annotation.path; import jp.co.intra_mart.foundation.web_api_maker.annotation.required; import jp.co.intra_mart.foundation.web_api_maker.annotation.variable; import jp.co.intra_mart.sample.web_api_maker.pet_shop.model.pet; @IMAuthentication @Authz(uri = "service://sample/pet-shop", action = "execute") public class PetService { @Path("/sample/pet-shop/pet/{id") @DELETE public void delete(@required @Variable(name = "id") final int id) throws NotFoundException { for (final Pet p : ConstantData.PETS) { if (p.getid() == id) { // delete return; @Path("/sample/pet-shop/pet/{id") @GET public Pet get(@required @Variable(name = "id") final int id) throws NotFoundException { for (final Pet pet : ConstantData.PETS) { if (pet.getid() == id) { return pet; @Path("/sample/pet-shop/pets") @POST public void register(@required @Body final Pet pet) { // register @Path("/sample/pet-shop/pet/{id") @PUT public void update(@required @Variable(name = "id") final int id, @Required @Body final Pet pet) throws NotFoundException { for (final Pet p : ConstantData.PETS) { if (p.getid() == id) { // update return; コラム 認 可 については 認 可 仕 様 書 を 参 照 してください 返 却 するステータスコードを 指 定 する Web API Maker では 処 理 が 正 常 に 終 了 した 場 合 はステータスコード 200 が 返 却 され 例 外 が 投 げられ 処 理 が 終 了 した 場 合 はステータスコード 500 が 返 却 されます 15

@Response を 付 与 することで HTTPのレスポンスでクライアントに 返 却 するステータスコードを 指 定 することができます HTTPレスポンスアノテーション 概 要 @Response このアノテーションはサービスクラスのメソッド またはExceptionクラスに 付 与 が 可 能 です このアノテーションを 付 与 する 事 により Web API Maker が 指 定 のレスポンスを 返 却 します ただし セキュアチェック 認 証 認 可 チェック 等 によるエラー 発 生 時 はその 限 りではありませ ん 以 下 は Exception クラスに 付 与 した 例 になります package jp.co.intra_mart.sample.web_api_maker.pet_shop.service; import jp.co.intra_mart.foundation.web_api_maker.annotation.response; @Response(code = 404) public class NotFoundException extends Exception { public NotFoundException(final String message) { super(message); 注 意 @Responseを 指 定 しない 場 合 にレスポンスされる HTTP ステータスについては 利 用 方 法 を 参 照 してください 手 動 レスポンスを 返 却 する Web API Maker では HTTPのレスポンスとして エラーの 有 無 とAPIの 戻 り 値 情 報 を 書 き 込 みます @PreventWritingResponse を 付 与 する 事 により Web API Maker 側 からレスポンスの 書 き 込 みを 行 わないようになります 手 動 レスポンスアノテーション 概 要 @PreventWritingResponse このアノテーションはメソッドに 付 与 が 可 能 です このアノテーションを 付 与 する 事 により Web API Maker 側 からレスポンスの 書 き 込 みを 行 わないようになり ます ただし セキュアチェック 認 証 認 可 チェック 等 によるエラー 発 生 時 は 書 き 込 みが 発 生 します APIの 引 数 に HttpServletResponse(パラメータアノテーション 無 し)を 指 定 する 事 で HttpServletResponse を 取 得 可 能 なので そのレスポンスを 利 用 して 任 意 のレスポンスを 返 す 事 が 可 能 と なります 実 装 例 は 以 下 の 通 りです 16

package jp.co.intra_mart.sample.web_api_maker.pet_shop.service; import java.io.ioexception; import javax.servlet.http.httpservletresponse; import jp.co.intra_mart.foundation.web_api_maker.annotation.get; import jp.co.intra_mart.foundation.web_api_maker.annotation.imauthentication; import jp.co.intra_mart.foundation.web_api_maker.annotation.path; import jp.co.intra_mart.foundation.web_api_maker.annotation.preventwritingresponse; import jp.co.intra_mart.sample.web_api_maker.pet_shop.meta.petshop; @IMAuthentication public class PetService { @Path("/sample/pet-shop/redirect") @GET @PreventWritingResponse public void redirect(final HttpServletResponse response) throws IOException { response.sendredirect("/sample/pet-shop"); APIドキュメントを 登 録 する APIドキュメント(Swagger specification) 出 力 用 の APIドキュメントアノテーション を 利 用 することで APIドキュメントの 出 力 を 行 うことができます APIドキュメントアノテーションは 主 にAPIドキュメントでの 各 メソッドのカテゴライズに 利 用 します APIドキュメントを 出 力 するためには アノテーション 自 体 を 作 成 し 付 与 する 必 要 があります 各 項 目 にメッセージコードを 指 定 することで 国 際 化 対 応 ができます サービスクラスに 付 与 するアノテーションの 実 装 例 は 以 下 になります package jp.co.intra_mart.sample.web_api_maker.pet_shop.meta; @Retention(RetentionPolicy.RUNTIME) @Tag(name = "tag", description = "CAP.Z.IWP.WEBAPIMAKER.SAMPLE.PETSHOP.CATEGORY.DESCRIPTION") //メッセージコードを 指 定 することで 国 際 化 できます public @interface PetTag { サービスクラスのメソッドに 付 与 するアノテーションの 実 装 例 は 以 下 になります package jp.co.intra_mart.sample.web_api_maker.pet_shop.meta; @Retention(RetentionPolicy.RUNTIME) @Category(value = "petshop", name = "ペットショップ", description = "ペットショップAPIです", version = "1.0.0") public @interface PetShop { 作 成 したアノテーションの 利 用 し APIドキュメントを 登 録 する 例 は 以 下 になります 17

package jp.co.intra_mart.sample.web_api_maker.pet_shop.service; import jp.co.intra_mart.foundation.web_api_maker.annotation.body; import jp.co.intra_mart.foundation.web_api_maker.annotation.delete; import jp.co.intra_mart.foundation.web_api_maker.annotation.get; import jp.co.intra_mart.foundation.web_api_maker.annotation.imauthentication; import jp.co.intra_mart.foundation.web_api_maker.annotation.post; import jp.co.intra_mart.foundation.web_api_maker.annotation.put; import jp.co.intra_mart.foundation.web_api_maker.annotation.path; import jp.co.intra_mart.foundation.web_api_maker.annotation.required; import jp.co.intra_mart.foundation.web_api_maker.annotation.variable; import jp.co.intra_mart.sample.web_api_maker.pet_shop.meta.petshop; import jp.co.intra_mart.sample.web_api_maker.pet_shop.meta.pettag; import jp.co.intra_mart.sample.web_api_maker.pet_shop.model.pet; @IMAuthentication @PetShop public class PetService { @Path("/sample/pet-shop/pet/{id") @DELETE(summary = "ペット 情 報 を 削 除 します ", description = "ペット 情 報 を 削 除 します ") @PetTag public void delete(@required @Variable(name = "id", description = "ペットID") final int id) throws NotFoundException { for (final Pet p : ConstantData.PETS) { if (p.getid() == id) { // delete return; @Path("/sample/pet-shop/pet/{id") @GET(summary = "ペット 情 報 を 取 得 します ", description = "ペット 情 報 を 取 得 します ") @PetTag public Pet get(@required @Variable(name = "id", description = "ペットID") final int id) throws NotFoundException { for (final Pet pet : ConstantData.PETS) { if (pet.getid() == id) { return pet; @Path("/sample/pet-shop/pets") @POST(summary = "ペット 情 報 を 登 録 します ", description = "ペット 情 報 を 登 録 します ") @PetTag public void register(@required @Body final Pet pet) { // register @Path("/sample/pet-shop/pet/{id") @PUT(summary = "ペット 情 報 を 更 新 します ", description = "ペット 情 報 を 更 新 します ") @PetTag public void update(@required @Variable(name = "id", description = "ペットID") final int id, @Required @Body(description = "ペット 情 報 ") final Pet pet) throws NotFoundException { for (final Pet p : ConstantData.PETS) { if (p.getid() == id) { // update return; 注 意 APIドキュメントの 参 照 方 法 は API 仕 様 を 参 照 する を 参 照 してください 18

引 数 戻 り 値 に 指 定 可 能 な 型 Web API Maker ではHTTPメソッドやパラメータアノテーションごとに 受 け 取 り 可 能 な 型 が 異 なります 引 数 戻 り 値 に 指 定 可 能 な 型 は 以 下 になります 引 数 戻 り 値 に 指 定 可 能 な 型 (パラメータアノテーション 別 ) 型 @Parameter @Header @Variable @Body なし 戻 り 値 備 考 void byte[] 数 値 変 換 されず バイナリを 扱 います char[] String#toCharArray() と 等 価 InputStream 1 null @Bodyに 利 用 する 場 合 Swagger spec 出 力 に 非 対 応 InputStream[] 1 null Swagger spec 出 力 に 非 対 応 AttachmentFile 1 null AttachmentFile[] 1 null Swagger spec 出 力 に 非 対 応 boolean false 2 Boolean null 2 byte 0 2 Byte null 2 char 0 2 Character null 2 short 0 2 Short null 2 integer 0 2 Integer null 2 long 0 2 Long null 2 float 0 2 Float null 2 double 0 2 Double null 2 CharSequence null 2 Calendar null 2 Date null 2 Locale null 2 TimeZone null 2 URI null 2 URL null 2 UUID null 2 *[] 3 null List<*> 3 null Set<*> 3 null ServletRequest request 19

型 intra-mart Accel Platform Web API Maker プログラミングガイド 第 2 版 2015-12-01 @Parameter @Header @Variable @Body なし 戻 り 値 備 考 HttpServletRequest request ServletResponse response HttpServletResponse response (その 他 ) 1 null @Parameterに 利 用 する 場 合 Swagger spec 出 力 に 非 対 応 1 マルチパートのみ 指 定 可 3 *[] List<*> Set<*> それぞれの * は 2に 示 した 型 に 限 る 注 意 Swagger spec 出 力 に 関 しては Web 上 からAPI 仕 様 を 参 照 し 実 行 する を 参 照 してください 注 意 利 用 できない 型 を 指 定 した 場 合 intra-mart Accel Platform の 起 動 時 に 例 外 が 出 力 されます パッケージの 登 録 クラスパスに @WebAPIMaker が 付 与 されたファクトリクラスのパッケージを 列 挙 したファイルを 配 置 します 複 数 ある 場 合 は 複 数 行 にわけて 書 き 込 みます 例 として intra-mart e Builder for Accel Platform を 利 用 する 場 合 は 以 下 のようにファイルを 作 成 してください src/main/resources/meta-inf/im_web_api_maker/packages jp.co.intra_mart.sample.web_api_maker.pet_shop.service Web API Maker を 利 用 したAPIの 作 成 手 順 は 以 上 になります 20

作 成 したAPIの 利 用 について 項 目 利 用 方 法 セッション 管 理 API 仕 様 を 参 照 する Web 上 からAPI 仕 様 を 参 照 し 実 行 する 利 用 方 法 @Path で 指 定 した URL にアクセスすると REST-API が 実 行 可 能 です Web API Maker では データの 受 け 渡 しには 標 準 でJSON XMLの2 種 類 のフォーマットに 対 応 しています クライアントからのデータ 送 信 時 に ひとまとまりのオブジェクト 情 報 を 送 信 する 際 は オブジェクトを 各 フォーマットでリクエストボディに 含 める 事 が 可 能 です サーバからの 戻 り 値 も このフォーマットになります 利 用 するフォーマットはリクエストヘッダの 値 を 利 用 して 決 定 します リクエストヘッダ Content-Type メッセージボディにオブジェクトを 含 める 際 に 指 定 します JSONの 場 合 は application/json XMLの 場 合 は application/xml と 指 定 します リクエストヘッダ Accept 戻 り 情 報 のフォーマットを 指 定 します JSONの 場 合 は application/json XMLの 場 合 は application/xml と 指 定 します 404などのエラー 時 は 指 定 した 形 式 となる 保 証 はありません 戻 り 値 の 例 は 以 下 のようになります (application/json 場 合 ) { "error": false, "data": { "id": 1, "name": "Dog", "sold": false, "attibute": { "breed": "golden" { "error": true, "errormessage": "[E.IWP.WEBAPIMAKER.CONVERTER.10001] JSON 文 字 列 からの 変 換 に 失 敗 しました json:434343" コラム 値 がnullであるプロパティはJSON XML 共 に 出 力 されません また レスポンスされる HTTP ステータスは 以 下 の 通 りです レスポンスされる HTTP ステータスの 種 類 200 OK Accept ヘッダで 指 定 された MIME タイプで 処 理 結 果 を 返 却 します 400 Bad Request リクエストの 内 容 が 不 正 です Content-Type が application/json だが JSON 文 字 列 でない 等 が 考 えられます 401 Unauthorized 未 認 証 状 態 で 認 可 が 通 りません 403 Forbidden 認 証 済 み 状 態 ですが 認 可 が 通 りません 404 Not Found URL が 定 義 されていません 405 Method Not Allowed そのメソッドではアクセスできません 21

406 Not Acceptable Accept ヘッダに 指 定 されているタイプが 全 部 サポートしておらず レスポンスを 返 すことができません 415 Unsupported Media Type Content-Type ヘッダに 指 定 されているタイプがサポートしておらず リクエストを 読 むことができませ ん 500 Internal Server Error 内 部 サーバエラーです セッション 管 理 Web API Maker では リクエストヘッダー X-Intramart-Session を 指 定 することによりセッション 管 理 を 行 えます X-Intramart-Sessionには keep, once, never の3つの 値 が 利 用 できます ヘッダーを 省 略 した 場 合 は keep を 指 定 した 場 合 と 同 じ 挙 動 となります 指 定 した 値 による 挙 動 は 認 証 方 式 によって 以 下 のようになります X-Intramart-Session 動 作 IMAuthenticationの の 場 合 keep once never セッション 管 理 を 何 も 行 いません セッション 管 理 を 何 も 行 いません Web API 実 行 後 にログイン 状 態 である 場 合 ログアウトを 行 います BasicAuthenticationの の 場 合 X-Intramart-Session keep once never 動 作 認 証 済 みでない 場 合 は Web API 実 行 前 にログインを 行 います 実 行 後 は 何 も 行 いません 認 証 済 みでない 場 合 は Web API 実 行 前 にログインを 行 います Web API 実 行 前 に 未 認 証 であった 場 合 はログアウトを 行 います 認 証 済 みでない 場 合 は Web API 実 行 前 にログインを 行 います Web API 実 行 後 にログイン 状 態 である 場 合 ログアウ トを 行 います OAuthの の 場 合 X-Intramart-Session keep once never 動 作 認 証 済 みでない 場 合 は Web API 実 行 前 にログインを 行 います 実 行 後 は 何 も 行 いません 認 証 済 みでない 場 合 は Web API 実 行 前 にログインを 行 います Web API 実 行 前 に 未 認 証 であった 場 合 はログアウトを 行 います 認 証 済 みでない 場 合 は Web API 実 行 前 にログインを 行 います Web API 実 行 前 に 未 認 証 であった 場 合 はログアウトを 行 います API 仕 様 を 参 照 する 以 下 のURLにてAPIの 仕 様 を 返 すJSONを 取 得 可 能 です http://<host>:<port>/<context_path>/api-docs/${api-category ${api-category はサービスクラスで 指 定 している @Category アノテーションのvalue 値 になります 注 意 上 記 のAPI 仕 様 のURLは 認 可 によって 閲 覧 を 制 限 することが 可 能 です リソース 名 は Swagger specification です 認 可 については 認 可 仕 様 書 を 参 照 してください 注 意 API 仕 様 出 力 を 行 えるサービスクラスは @IMAuthentication が 付 与 されている 物 のみです @IMAuthentication が 付 与 されておらず @OAuth または @BasicAuthentication が 付 与 されているサービスクラスの 仕 様 は 出 力 で きません 22

Web 上 からAPI 仕 様 を 参 照 し 実 行 する 以 下 のURLにてswagger uiを 表 示 できます http://<host>:<port>/<context_path>/swagger_ui/ ページ 上 部 のテキストボックスにてAPI 仕 様 のURL( http://<host>:<port>/<context_path>/api-docs/${api-category)を 入 力 することで 仕 様 の 表 示 実 行 が 可 能 です 23

サンプルについて 項 目 サンプルアプリケーションの 仕 様 サンプルの 資 材 一 覧 Web API Maker には 簡 単 なWeb APIのサンプルが 含 まれています デプロイするには IM-Juggling で Web API Maker を 含 め なおかつサンプルを 含 める 設 定 で war を 作 成 してください warのデプロイ 後 テナント 環 境 セットアップ サンプルデータセットアップすることで 本 サンプルを 利 用 することができます サンプルアプリケーションの 仕 様 以 下 のURLにてAPIの 仕 様 を 返 すJSONを 取 得 可 能 です http://<host>:<port>/<context_path>/api-docs/petshop また 以 下 のURLにてswagger uiを 表 示 できます ページ 上 部 のテキストボックスにてAPI 仕 様 のURLを 入 力 することで 仕 様 が 表 示 可 能 です http://<host>:<port>/<context_path>/swagger_ui/ サンプルの 資 材 一 覧 サンプルのjavaソースは 最 新 情 報 ダウンロードページ(iAP) からダウンロードできます http://www.intra-mart.jp/download/product/iap/index.html 24

25