# mulesoft Apikit - Full Documentation # API コンシュームの拡張とネットワークトラフィックの最小化 受信ネットワークトラフィックの量を減らし、API をコンシュームしやすくするには、​`$expand`​ システムクエリオプションを使用します。API コンシューマーはクエリ結果の関連エンティティのインライン表現のみを要求するため、返される情報は複数のネットワーク往復処理を回避します。このクエリオプションを使用すると、従量制課金でレイテンシーの影響を受けるコンシューマーにメリットをもたらします。 APIkit for OData 1.3.0 以降、このモジュールは自動ルーティングをサポートし、最も一般的なケースで ​`$expand`​ システムクエリオプションを簡単に実装できます。この機能にはより多くの準備と設定が必要ですが、​`$expand`​ 要求を処理するときに、実装されたフローを再利用できます。 システムクエリオプションについての詳細は、 [OASIS 仕様](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html#sec_SystemQueryOptionexpand)​を参照してください。 ## [](#始める前に)始める前に `$expand`​ 機能を使用するには、次の要件を満たす必要があります。 - APIkit for OData Module (バージョン 1.3.0) - 各展開可能なエンティティの ​``​ 実装 - ``​ フローの ​`in`​ 検索条件のサポート ## [](#expand-機能の例)`$expand`​ 機能の例 例について説明します。 - `Employee`​ エンティティには関連する ​`Manager`​ エンティティがある。 - `Employees`​ エンティティセットは ​`Employee`​ エンティティの集合である。 - `Managers`​ エンティティセットは ​`Manager`​ エンティティの集合である。 - API の場所は ​`https://example.com/api/`​。 この設定を前提として、次の要求で従業員とそのマネージャーを取得します。 - `GET https://example.com/api/Employees`​ を使用して、従業員のリストを取得する。 - リレーションの ​`ReferentialConstraint`​ を介して ​`Manager`​ ID を収集する。 - `GET https://example.com/api/Managers?$filter=ManagerID in (id1, id2, ..., idN)`​ を使用して、関連するマネージャーのリストを取得する。 - 結合条件に基づいて、リストをマージする小さなプログラムを記述する。 `$expand`​ 機能を使用する場合、​`Manager`​ ナビゲーションプロパティが展開された従業員のリストを取得する要求は ​`GET https://example.com/api/Employees?$expand=Manager`​ です。 ## [](#generic-expand-機能)`generic expand`​ 機能 `generic expand`​ 機能を使用して、既存のフロー実装を展開要求の開始点として再利用します。この機能により、モジュールが ​`$expand`​ 項目を確実に完了するために必要な手順を実行している間、関連するデータ取得操作に集中できます。 `generic expand`​ 機能が有効になっているアプリケーションは、他の OData Mule アプリケーションと同様に機能します。ただし、フローの実行中に、モジュールがメインエンティティセットの情報を取得すると、​`expand`​ 項目の情報を収集するための追加の内部要求を実行します。 展開操作中にソフトウェアがエラーを処理する方法を設定できます。 - 要求をエラーで失敗させる。 - 失敗した展開を ​`null`​ 値に置き換える。 ## [](#generic-expand-操作)`generic expand`​ 操作 `generic expand`​ 機能は、元のフローが完了すると、追加のクエリをアプリケーションにディスパッチします。これはアプリケーション ​`EDM`​ に基づいて行われるため、追加のアノテーションを作成してモジュールに十分なコンテキストを追加する必要があります。 - 展開が行われる ​`EntitySet`​ には、その ​`Entity`​ のすべての展開可能な ​`NavigationProperty`​ に対する ​`NavigationPropertyBinding`​ があります。 これは、そのプロパティを展開するときに実行される ​``​ を選択するために使用されます。 - 展開可能な各 ​`NavigationProperty`​ には、​`ReferentialConstraint`​ が添付されています。 `Property`​ の値を ​`ReferencedProperty`​ の値と照合する場合、内部要求は ​`ReferentialConstraint`​ を使用します。 ### [](#フロー実行)フロー実行 1. メインフローが実行されて完了すると、​`entities`​ のコレクションが生成されます。 2. OData Module は、展開が必要なすべてのプロパティを収集します。 3. 各 ​`NavigationProperty`​ で、次の手順を実行します。 1. `ReferentialConstraint`​ から ​`source property`​ を取得します。 2. `ReferentialConstraint`​ から ​`referenced property`​ を取得します。 3. `NavigationPropertyBinding`​ から ​`destination entity set`​ を取得します。 4. 各 ​`entities`​ で解決された ​`source property`​ を取得します。これらの値を ​`source property list`​ に追加します。 5. `(…​source property list)`​ の ​`$filter=referenced property`​ を使用して ​`destination entity set`​ の ​``​ を呼び出すことで、内部要求を実行します。 ### [](#エラー処理とエラーの伝達)エラー処理とエラーの伝達 OData v4 アプリケーションのエラー処理は、​`generic expansion`​ を使用するかどうかに関係なく、各フローに対してローカルです。特定の ​`EntitySet`​ のエラー処理コードは、通常の要求と展開処理中に確認される内部要求のどちらの場合も、そのエンティティセットのフロー実装に属します。 展開プロセスはフローの実行が終了した後に実行されるため、展開プロセス中のエラー処理はサポートされていません。エラー処理で使用できる 2 つのオプションがあります。 - **Ignore errors during expansion (展開中にエラーを無視):**​ 一般的展開中のエラーは無視されます。 デフォルトでは、コレクションと単一オブジェクトの展開は、それぞれ空のリストと ​`null`​ 値に解決されます。 - **Propagate errors during expansion (展開中にエラーを伝達):**​ 一般的展開中にエラーが発生します。 エラーが OData v4 ルーターに到達すると、元の要求に対してエラー応答が返されます。 **\[Capabilities (機能)\]**​ タブで、​**ソースごと**​にエラー処理を設定できます。 ### [](#制限事項)制限事項 - 最初の ​`ReferentialConstraint`​ のみが考慮されます。 複合キーを使用するナビゲーションプロパティはサポートされていません。 - 展開は、​`EntitySet-by-EntitySet`​ ではなく ​`field-by-field`​ で行われます。 これにより、必要以上の内部要求が発生する可能性があります。 - 展開されたエンティティには常に ​``​ 実装があります。 ``​ 実装を使用した展開は、パフォーマンス上の問題により実行されません。 ## [](#実装のガイドライン)実装のガイドライン `generic expansion`​ 機能を実装するには、展開できる種別で各ソースにアノテーションを付ける必要があります。制限なしで ​`$expand`​ を有効にすると、API クライアントが複雑なクエリを記述できるようになり、パフォーマンスの問題が発生する可能性があります。 一部のリレーションに対して ​`$expand`​ を手動で実装する場合は、これらのリレーションを ​**\[Expandable Navigation Properties (展開可能なナビゲーションプロパティ)\]**​ オプションのリストから除外します。​`generic expansion`​ 機能を使用しないナビゲーションプロパティは、フロー内で手動で実装する必要があります。 ### [](#実装チェックリスト)実装チェックリスト 1. CSDL ファイルと Mule アプリケーションが期待される要件を満たしていることを確認します。 - すべての ​`NavigationProperty`​ に 1 つの ​`ReferentialConstraint`​ がある。 - すべての ​`EntitySet`​ にそのエンティティ種別の各 ​`NavigationProperty`​ に対して 1 つの ​`NavigationPropertyBinding`​ がある。 - すべての ​``​ で ​`$filter`​ システムクエリオプションの ​`in`​ 演算子がサポートされている。 2. `generic expand`​ サポートを有効にする各ソースで、次の手順を実行します。 1. **\[Capability (機能)\]**​ タブを開きます。 2. **\[Expandable navigation properties (展開可能なナビゲーションプロパティ)\]**​ 項目をインラインで編集します。 3. `generic expand`​ を使用して展開可能にする各ナビゲーションプロパティの名前を追加します。 4. ユースケースに応じて、​**\[Ignore errors on expand (展開時にエラーを無視)\]**​ をオンにして、一般的展開中のエラーを回避し、メインフローでエラーを生成します。 3. 既存のフローで ​`$expand`​ 機能がサポートされていることを確認します。 ## [](#関連情報)関連情報 - [APIkit for OData v4 Module リファレンス](https://docs.mulesoft.com/jp/apikit/latest/apikit-odatav4-extension-reference) - [エラー処理リファレンス](https://docs.mulesoft.com/jp/apikit/latest/apikit-odatav4-error-handling-reference) # APIkit for AsyncAPI APIkit for AsyncAPI では、イベント駆動型 API を実装できます。 非同期メッセージングプロトコルを使用して、AsyncAPI 仕様を作成できます。 Mule プロジェクトで API を実装するときに、追加および設定できる操作を備えたモジュールが用意されています。 AsyncAPI は、異なるシステム間でデータを確実かつ効率的に通信するイベント駆動型アーキテクチャに基づいています。 APIkit スキャフォールダーは、Mule プロジェクト内でさらに開発できる API 仕様の最小限の実装を生成します。​[Exchange](https://docs.mulesoft.com/jp/exchange/)​ から Mule アプリケーションをスキャフォールディングし、​[Anypoint Code Builder](https://docs.mulesoft.com/jp/anypoint-code-builder/imp-asyncapi)​ または ​[Anypoint Studio](https://docs.mulesoft.com/studio/import-api-specification-exchange#implement-asyncapi-specifications)​ で Mule アプリケーションを再スキャフォールディングします。 APIkit for AsyncAPI は、​`listener`​ および ​`publish`​ 操作内のメッセージがスキーマに準拠しているかどうかをチェックすることで、​[メッセージの検証](https://docs.mulesoft.com/jp/apikit/latest/apikit-asyncapi-module-reference#validation-of-messages)​をサポートしています。
APIkit for AsyncAPI は、 AsyncAPI 2.6 仕様​をサポートしています。
## [](#関連情報)関連情報 - [APIkit for AsyncAPI モジュールリファレンス](https://docs.mulesoft.com/jp/apikit/latest/apikit-asyncapi-module-reference) - [APIkit for AsyncAPI エラー処理リファレンス](https://docs.mulesoft.com/jp/apikit/latest/apikit-asyncapi-error-handling-reference) - [AsyncAPI Specifications](https://docs.mulesoft.com/design-center/design-async-api) # APIkit for AsyncAPI エラー処理リファレンス APIkit for AsyncAPI では、次のエラーの種類が定義されています。
エラーの種類 説明

INTERNAL_SERVER_ERROR

内部エラー。

VALIDATION_ERROR

ペイロードは API 仕様のスキーマに準拠していません。

PUBLISHING_ERROR

APIkit は選択されたチャネルにメッセージをパブリッシュできません。

ROUTING_ERROR

APIkit はフローにメッセージをルーティングできません。

## [](#apikit-for-asyncapi-エラー処理)APIkit for AsyncAPI エラー処理 APIkit for AsyncAPI スキャフォルダーはエラー処理コードを生成しません。 # APIkit for AsyncAPI でサポートされているバインドとパラメーター化されたチャネル APIkit for AsyncAPI は、メッセージ駆動型アーキテクチャを可能にするさまざまなバインドをサポートしています。
コネクタ パブリッシュ メッセージリスナー 説明 参照

MQ (Anypoint MQ Connector) 用 Anypoint コネクタ

destination

destination

デフォルトでは、AnypointMQ Connector は ​destination​ としてチャネル名を使用します。チャネル名が実際の ​destination​ 名と異なる場合、またはチャネル名が有効な ​destination​ 名でない場合は、​destination​ (キューまたはエクスチェンジ) 名を指定する必要があります。

「Anypoint MQ Bindings (Anypoint MQ バインド)」​を参照してください。

Solace PubSub+ Connector

deliveryMode

deliveryMode

Solace PubSub+ Connector は、​direct​ モードまたは ​persistent​ モードで動作します。デフォルトモードは ​persistent​ です。​deliveryMode​ パラメーターは、メッセージのパブリッシュのサービス品質を決定します。​Direct​ モードは、レイテンシーは低くなりますが、メッセージ配信が保証されません。「persistent」モードでは、ブローカーに障害が発生した場合でも、メッセージが確実に配信されます。

「Solace Bindings (Solace バインド)」​を参照してください。

destinationType

destinationType

Solace PubSub+ Connector は、APIkit for AsyncAPI の ​queue​ をサポートしています。

「Solace Bindings (Solace バインド)」​を参照してください。

なし

topicSubscriptions

Solace PubSub+ Connector は、​destinationType​ が ​queue​ の場合にキューがサブスクライブするトピックのリストを指定します。トピックを指定しない場合、​queue​ はチャネル名が表すトピックに自動的にサブスクライブします。

「Solace Bindings (Solace バインド)」​を参照してください。

Apache Kafka 用 Anypoint Connector (Apache Kafka Connector) および Solace PubSub+ Connector は、バインドをサポートしていません。
## [](#パラメーター化されたチャネル)パラメーター化されたチャネル APIkit for AsyncAPI はパラメーター化されたチャネルをサポートしているため、動的で再利用可能な設定を定義し、インテグレーションをより効果的に拡張し、インテグレーションのさまざまな部分で一貫した設定を作成できます。 APIkit for AsyncAPI は、バインドで定義されたパラメーターをサポートしていません。たとえば、AnypointMQ の ​`destination`​ など。 次のコードは、パラメーター化された ​`destination`​ を含む部分的な API 仕様の例を示しています。 ```yaml channels: orderAcknowledgement: description: new Order Acknowledgment servers: - anypointMQ bindings: anypointmq: destination: '{env}.amq-asyncapi-poc.orderAcknowledgement' destinationType: queue parameters: env: $ref: '#/components/parameters/env' publish: operationId: listen-order-ack description: publish a new Order Acknowledgment event to this channel and we will process it message: $ref: '#/components/messages/orderAckMessage' ``` パラメーター化されたチャネルは、設計時に設定する必要があります。実行時にパラメーター化されたチャネルを設定することはできません。 パラメーター化されたチャネルを使用した完全な API の例を示します。 asyncapi: '2.6.0' info: title: AMQ-AsyncAPI-PoC version: '1.0.11' description: Proof of Concept for Anypoint MQ AsyncAPI interface contact: name: Example Company email: address@example.com tags: - name: WMS description: Warehouse Management System - name: PoC description: Proof of Concept - name: Order Acknowledgement servers: anypointMQ: url: https://{region}.anypoint.mulesoft.com/api/{version}/organizations/{organizationId}/environments/{environmentId} protocol: anypointmq protocolVersion: v1 description: The Anypoint MQ broker variables: region: $ref: '#/components/serverVariables/region' version: $ref: '#/components/serverVariables/version' organizationId: $ref: '#/components/serverVariables/organizationId' environmentId: $ref: '#/components/serverVariables/environmentId' channels: orderAcknowledgement: description: new Order Acknowledgment servers: - anypointMQ bindings: anypointmq: destination: '{env}.amq-asyncapi-poc.orderAcknowledgement' destinationType: queue parameters: env: $ref: '#/components/parameters/env' publish: operationId: listen-order-ack description: publish a new Order Acknowledgment event to this channel and we will process it message: $ref: '#/components/messages/orderAckMessage' components: parameters: env: description: The Mule runtime environment schema: type: string enum: - dev - tst - acc - prd default: tst serverVariables: region: description: The CloudHub region where the endpoint is situated enum: - mq-eu-west-1 default: mq-eu-west-1 version: description: The version of the Anypoint MQ API enum: - v1 default: v1 organizationId: description: The identifier of our organization (business group) enum: - 7a2b1c3d-4e5f-6g7h-8i9j-0k1l2m3n4o5p environmentId: description: The identifier of the runtime environment within the organization enum: - a1b2c3d4-5e6f-7g8h-9i0j-1k2l3m4n5o6p - b2c3d4e5-6f7g-8h9i-0j1k-2l3m4n5o6p - c3d4e5f6-7g8h-9i0j-1k2l-3m4n5o6p default: a1b2c3d4-5e6f-7g8h-9i0j-1k2l3m4n5o6p messages: orderAckMessage: name: OrderAckMessage description: An order acknowledgment message. payload: $ref: 'schemas/orderAcknowledgement.json'
APIkit for AsyncAPI は、​listeners​ でのみパラメーター化されたチャネルを使用します。
# APIkit for AsyncAPI モジュールでの Avro スキーマの実装と検証 APIkit for AsyncAPI では、メッセージの構造とエンコードを指定するための形式を定義するのに役立つデータシリアル化システムである、 [Avro](https://avro.apache.org/)​ がサポートされています。このモジュールは、設計フェーズでのメッセージの構造を示します。APIkit for AsyncAPI では、Avro スキーマを使用したメッセージの ​[DataSense](https://docs.mulesoft.com/studio/datasense-concept)​ もサポートされます。 ## [](#スキーマ定義)スキーマ定義 Avro 仕様では、​`schemaFormat`​ の値を ​`application/vnd.apache.avro`​ として指定することで、その形式を定義します。 Avro 仕様では、スキーマのインライン記述、または Avro 形式でスキーマを記述する外部ドキュメントの参照がサポートされています。 - インライン定義 publish: summary: inform details about person operationId: lightMeasured message: schemaFormat: 'application/vnd.apache.avro;version=1.9.0' payload: name: lightMeasured type: record fields: - name: lumens type: int example: 134 - name: sentAt type: string logicalType: timestamp-millis 10 example: 1985-04-12T23:20:50.52Z - Avro フラグメントへの参照 channels: smartylighting.streetlights.1.0.event.{streetlightId}.monitor: publish: message: schemaFormat: application/vnd.apache.avro;version=1.9.0 payload: $ref: /exchange\_modules/83589b9b-6630-4c28-985d-174ee9172661/lumenschema/1.0.0/lumens.json' `lumens.json`​ ファイルは、Avro スキーマの仕様を提供します。 { "type": "record", "name": "lightMeasured", "fields": \[ {"name": "lumens", "type": "int"}, {"name": "sentAt", "type": {"type": "string", "logicalType": "timestamp-millis"}} \] } APIkit for AsyncAPI は、Avro メッセージがインラインで定義された非同期 API をサポートしています。APIkit for AsyncAPI は、Avro フラグメントを参照する API 仕様をサポートしていません。 ## [](#avro-メッセージのエンコードと検証)Avro メッセージのエンコードと検証 Avro メッセージは、バイナリ形式またはテキスト (JSON) 形式でエンコードされます。仕様では、​`contentType`​ または ​`defaultContentType`​ の値が提供されます。 APIkit for AsyncAPI は、テキスト (JSON) でエンコードされたメッセージを検証しますが、バイナリでエンコードされたメッセージは検証しません。 # APIkit for AsyncAPI モジュールリファレンス コラボレーション、アプリケーションの構築、コードベースの管理を行うには、APIkit for AsyncAPI の連動関係、名前空間、スキーマ情報に関する基礎を学びます。 ## [](#連動関係)連動関係 org.mule.modules mule-asynckit-module LATEST\_VERSION **(1)** mule-plugin
1LATEST_VERSION​ を入手するには、APIkit Release Notesを確認してください。
## [](#名前空間とスキーマ)名前空間とスキーマ xmlns:apikit-asyncapi="http://www.mulesoft.org/schema/mule/apikit-asyncapi" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/apikit-asyncapi http://www.mulesoft.org/schema/mule/apikit-asyncapi/current/mule-apikit-asyncapi.xsd"> ## [](#設定)設定 ### [](#Config)設定 デフォルト設定 #### [](#パラメーター)パラメーター
名前 型 説明 デフォルト値 必須

Name (名前)

String (文字列)

この設定の名前。コネクタはこの名前の設定を参照します。

なし

はい

Api Definition (API 定義)

String (文字列)

API 定義。

なし

はい

Disable Content Validation (コンテンツ検証を無効化)

Boolean (ブール)

ペイロードコンテンツ検証を無効にします。

false

いいえ

Kafka Config (Kafka 設定)

Kafka 設定​ の配列

Kafka サーバー設定のリスト。アプリケーションを作成するためにスキャフォールディングされる仕様にリストされている Kafka サーバーごとに 1 つ。

なし

いいえ

Anypoint MQ Configs (Anypoint MQ 設定)

Anypoint MQ 設定​ の配列

AMQ 設定のリスト。

なし

いいえ

Solace Configs (Solace 設定)

Solace 設定​ の配列

Solace 設定のリスト。

なし

いいえ

Salesforce Pub/Sub Configs (Salesforce Pub/Sub 設定)

Salesforce Pub/Sub Connector 設定​ の配列

SalesforcePubSub 設定のリスト。

なし

いいえ

Name (名前)

String (文字列)

他のコンポーネント内のこの要素を参照するために使用するこの要素の識別子。

なし

はい

### [](#サポートされるメッセージブローカー)サポートされるメッセージブローカー
メッセージブローカー 説明 サポートされるプロトコル 設定の詳細

Anypoint MQ

Anypoint MQ による非同期メッセージングをサポートします。

anypointmq

Anypoint MQ 設定は、AsyncAPI 仕様のサーバーオブジェクトで指定されます。​Message Listener​ と ​Subscribe​ 操作をサポートします。

Kafka

Apache Kafka による非同期メッセージングをサポートします。

kafka、kafka-secure

Kafka 設定は、AsyncAPI 仕様のサーバーオブジェクトで指定されます。​Message Listener​ と ​Subscribe​ 操作をサポートします。

Salesforce Platform イベント

Salesforce Pub/Sub 用 Anypoint Connector (Salesforce Pub/Sub Connector) を使用して、非同期 API 仕様を実装できます。

salesforcepubsub*

プロパティファイルで接続の詳細を確認できます。​Message Listener​ と ​Subscribe​ 操作、および ​Message Listener​ と ​Publish​ 操作をサポートします。

Message Listener​ 操作では、AsyncAPI 仕様 ​defaultContentType​ は application/JSON である必要があります。

Publish​ 操作では、ペイロードは JSON である必要があります。APIkit for AsyncAPI モジュールは、JSON ペイロードをオブジェクトの配列型に変換します。

Solace PUB/SUB+

Solace PubSub+ Connector を使用して非同期 API 仕様の実装をサポートします。

solace

プロパティファイルで接続の詳細を確認できます。​Message Listener​ および ​Publish​ 操作をサポートします。

\*​ Salesforce Pub/Sub Connector 1.0.15 以降では、Anypoint Connector を使用する必要があります。 #### [](#関連操作)関連操作 - [Publish](#Publish)​ #### [](#関連付けられたソース)関連付けられたソース - [Message Listener](#MessageListener)​ ## [](#メッセージの検証)メッセージの検証 明示的に制限されていない限り、JSON スキーマ検証では項目の省略と追加が許可されます。次の表のスキーマに対してメッセージの検証を確認します。
スキーマ定義 メッセージ 有効

{ A: integer, B: string }

{A, B}

はい

{ A: integer, B: string }

{C, D}

はい

{ A: integer, B: string } required [A, B]

{C, D}

いいえ

{ A: integer, B: string } required [A, B]

{A, B, C}

はい

{ A: integer, B: string } required [A, B] ​additionalProperties​ = ​false

{A, B, C}

いいえ

{ A: integer, B: string } required [A, B] ​additionalProperties​ = ​false

{A, B}

いいえ

- `required`​ 項目は、JSON オブジェクトで必須の項目のリストを指定します。 - `additionalProperties`​ 項目は、JSON オブジェクトに追加プロパティを含めることができるかどうかを指定します。 スキーマでは、API 仕様で ​`required`​ と ​`additionalProperties`​ を指定する必要があります。
項目値は、検証の一環としてスキーマで指定された型に対してチェックされます。
仕様で操作に複数のメッセージスキーマが関連付けられている場合、検証は次の原則に従います。 - メッセージはすべてのスキーマに対して検証される。 - 少なくとも 1 つのスキーマに準拠している場合、メッセージは有効であるとみなされる。 - メッセージが少なくとも 1 つのスキーマに準拠していない場合、そのメッセージは無効とみなされる。 ### [](#例)例
スキーマ定義 メッセージ 有効

{ A: integer, B: string } required [A, B] ​additionalProperties​ = ​false​ { C: integer, D: string } required [C, D] ​additionalProperties​ = ​false

{A, B}

はい

{ A: integer, B: string } required [A, B] ​additionalProperties​ = ​false​ { C: integer, D: string } required [C, D] ​additionalProperties​ = ​false

{B, C}

いいえ

{ A: integer, B: string } required [A, B] ​additionalProperties​ = ​false​ { C: integer, D: string } required [C, D] ​additionalProperties​ = ​false

{A, B, C}

いいえ

{ A: integer, B: string } required [A, B] ​additionalProperties​ = ​false​ { C: integer, D: string } required [C, D] ​additionalProperties​ = ​false

{C, D}

はい

## [](#操作)操作 ## [](#Publish)Publish `` ### [](#パラメーター-2)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

使用する設定の名前。

なし

はい

Content (コンテンツ)

Binary (バイナリ)

処理するバイナリコンテンツ。

#[payload]

いいえ

Disable Content Validation (コンテンツ検証を無効化)

Boolean (ブール)

コンテンツの検証が無効になっているかどうかを示します。

False

いいえ

Config Ref (設定参照)

ConfigurationProvider

このコンポーネントを実行するために使用する設定の名前。

なし

はい

Channel Name (チャネル名)

String (文字列)

Channel name (チャネル名)

なし

はい

Server Name (サーバー名)

String (文字列)

Server name (サーバー名)

なし

はい

Target Variable (対象変数)

String (文字列)

操作の出力が配置される変数の名前。

なし

いいえ

Target Value (対象値)

String (文字列)

操作の出力に対して評価される式。その式の結果は対象変数に保存されます。

#[payload]

いいえ

エラーのマッピング

エラーのマッピング​ の配列

エラーのマッピングのセット。

なし

いいえ

### [](#出力)出力
項目 説明

Type (型)

パブリッシュ応答

### [](#次の設定の場合)次の設定の場合 - [設定](#Config)​ ### [](#スロー)スロー - APIKIT-ASYNCAPI:INTERNAL\_SERVER\_ERROR - APIKIT-ASYNCAPI:PUBLISHING\_ERROR - APIKIT-ASYNCAPI:VALIDATION\_ERROR ## [](#ソース)ソース ## [](#MessageListener)Message Listener `` ### [](#パラメーター-3)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

使用する設定の名前。

なし

はい

Disable Content Validation (コンテンツ検証を無効化)

Boolean (ブール)

ペイロードコンテンツの検証を無効にします。

なし

いいえ

Channel Name (チャネル名)

String (文字列)

Channel name (チャネル名)

なし

はい

サーバー

Array of String (文字列の配列)

リスンするサーバーのリスト。

なし

いいえ

出力 MIME タイプ

String (文字列)

この操作で生成されるペイロードの MIME タイプ。

なし

いいえ

Output Encoding (出力エンコード)

String (文字列)

この操作で生成されるペイロードのエンコード。

なし

いいえ

Primary Node Only (プライマリノードのみ)

Boolean (ブール)

クラスターでの実行時、このソースをプライマリノード上でのみ実行する必要があるかどうかを指定します。

なし

いいえ

Config Ref (設定参照)

ConfigurationProvider

このコンポーネントを実行するために使用する設定の名前。

なし

はい

Streaming Strategy (ストリーミング戦略)

繰り返し可能なストリームを指定および設定します。

なし

いいえ

Redelivery Policy (再配信ポリシー)

Redelivery Policy (再配信ポリシー)

同じメッセージの再配信を処理するためのポリシー。

なし

いいえ

### [](#出力-2)出力
項目 説明

Type (型)

任意の種別

Attributes Type (属性型)

### [](#次の設定の場合-2)次の設定の場合 - [設定](#Config)​ ## [](#型)型 ### [](#KafkaConfig)Kafka 設定
項目 型 説明 デフォルト値 必須

Server Key (サーバーキー)

String (文字列)

AsyncAPI 設定内のサーバー設定の識別子。

なし

はい

Producer Config Ref (プロデューサー設定参照)

String (文字列)

Kafka プロデューサー設定への参照。

なし

いいえ

Consumer Config Ref (コンシューマー設定参照)

String (文字列)

Kafka コンシューマー設定への参照。

なし

いいえ

サーバーキーは、サーバー設定を一意に識別するために必要です。プロデューサーおよびコンシューマー設定の参照は省略可能であり、Kafka 実装の特定のセットアップと要件によって異なります。
### [](#AnypointMqConfig)Anypoint MQ 設定
項目 型 説明 デフォルト値 必須

Server Key (サーバーキー)

String (文字列)

AsyncAPI のサーバー設定の識別子。

なし

はい

Config Ref (設定参照)

String (文字列)

Anypoint MQ 設定の詳細への参照。

なし

いいえ

サーバーキーは、サーバー設定を一意に識別するために必要です。設定参照は省略可能であり、設定の詳細を指定するために使用されます。
### [](#SolaceConfig)Solace 設定
項目 型 説明 デフォルト値 必須

Server Key (サーバーキー)

String (文字列)

AsyncAPI 仕様で設定されたサーバーキー。

なし

はい

Config Ref (設定参照)

String (文字列)

Solace 接続の設定名への参照。

なし

いいえ

サーバーキーは、サーバー設定を一意に識別するために必要です。設定参照は省略可能であり、設定の詳細を指定するために使用されます。
### [](#solace-pubsub-connector-の制限)Solace PubSub+ Connector の制限 APIkit for AsyncAPI の Solace PubSub+ Connector には次の制限があります。 - Solace PubSub+ Connector は、​**message listener**​ および ​**publish**​ 操作の ​`destinations`​ の ​`queue`​ および ​`topic`​ をサポートします。ただし、APIkit for AsyncAPI 実装では、​`destination`​ の値として ​`queue`​ の使用のみがサポートされています。 - 同じ型の演算子のみを同じ ​`destination`​ の ​`queue`​ にマップする必要があります。 ### [](#SalesforcePubSubConfig)Salesforce Pub/Sub Connector 設定
項目 型 説明 デフォルト値 必須

Server Key (サーバーキー)

String (文字列)

AsyncAPI 仕様で設定されたサーバーキー。

なし

はい

Config Ref (設定参照)

String (文字列)

Salesforce Pub/Sub Connector 設定の名前への参照。

なし

いいえ

サーバーキーは、サーバー設定を一意に識別するために必要です。設定参照は省略可能であり、設定の詳細を指定するために使用されます。
### [](#RepeatableInMemoryStream)Repeatable In Memory Stream (反復可能なメモリ内ストリーム)
項目 型 説明 デフォルト値 必須

Initial Buffer Size (初期バッファサイズ)

Number (数値)

ストリームをコンシュームし、ランダムアクセスを提供するために割り当てられたメモリ量。ストリームにバッファ容量より大きいデータが含まれる場合、バッファは ​bufferSizeIncrement​ 属性に従って上限の ​maxInMemorySize​ まで拡張されます。

なし

いいえ

Buffer Size Increment (バッファサイズ増分)

Number (数値)

バッファサイズが初期サイズを超えた場合に、どれだけ拡張するか。値を 0 またはそれ以下に設定すると、バッファは拡張されません。バッファが満杯になると ​STREAM_MAXIMUM_SIZE_EXCEEDED​ エラーが返されます。

なし

いいえ

Max Buffer Size (最大バッファサイズ)

Number (数値)

使用されるメモリの最大量。これを超えると、​STREAM_MAXIMUM_SIZE_EXCEEDED​ エラーが発生します。0 以下の値は無制限を意味します。

Buffer Unit (バッファ単位)

Enumeration (列挙)。次のいずれかになります。

  • BYTE (バイト)

  • KB

  • MB

  • GB

これらの属性は、この単位で表されます。

なし

いいえ

### [](#RepeatableFileStoreStream)Repeatable File Store Stream (反復可能なファイルストアストリーム)
項目 型 説明 デフォルト値 必須

In Memory Size (メモリ内サイズ)

Number (数値)

データをメモリ内に保持するためにストリームで使用する最大メモリを定義します。このサイズを超えると、ストリームはコンテンツをディスクにバッファします。

Buffer Unit (バッファ単位)

Enumeration (列挙)。次のいずれかになります。

  • BYTE (バイト)

  • KB

  • MB

  • GB

maxInMemorySiz​ を表す単位。

なし

いいえ

### [](#RedeliveryPolicy)Redelivery Policy (再配信ポリシー)
項目 型 説明 デフォルト値 必須

Max Redelivery Count (最大再配信数)

Number (数値)

正常に処理されずにプロセス失敗メッセージがトリガーされるまでにメッセージを再配信できる最大回数。

なし

いいえ

Message Digest Algorithm (メッセージダイジェストアルゴリズム)

String (文字列)

安全なハッシュアルゴリズム。

SHA-256

いいえ

Message Identifier (メッセージ識別子)

Redelivery Policy Message Identifier (再配信ポリシーメッセージ識別子)

メッセージを識別するために使用される戦略。

なし

いいえ

Object Store (オブジェクトストア)

ObjectStore

各メッセージの再配信カウンターが保存されるオブジェクトストア。

なし

いいえ

### [](#RedeliveryPolicyMessageIdentifier)Redelivery Policy Message Identifier (再配信ポリシーメッセージ識別子)
項目 型 説明 デフォルト値 必須

Use Secure Hash (セキュアハッシュを使用)

Boolean (ブール)

再配信されたメッセージの識別にセキュアハッシュアルゴリズムを使用するかどうか。

なし

いいえ

Id Expression (ID 式)

String (文字列)

メッセージがいつ再配信されたのかを判断するために使用する式。このプロパティは、​useSecureHash​ が ​false​ の場合に設定できます。

なし

いいえ

### [](#PublishResponse)パブリッシュ応答
項目 型 説明 デフォルト値 必須

Response Data (応答データ)

Object (オブジェクト)

要求に応答してサーバーが返すデータ。

なし

いいえ

### [](#ErrorMapping)エラーのマッピング
項目 型 説明 デフォルト値 必須

Source (ソース)

Enumeration (列挙)。次のいずれかになります。

  • ANY

  • REDELIVERY_EXHAUSTED​

  • TRANSFORMATION

  • EXPRESSION

  • SECURITY

  • CLIENT_SECURITY​

  • SERVER_SECURITY​

  • ROUTING

  • CONNECTIVITY

  • RETRY_EXHAUSTED​

  • TIMEOUT

操作中に発生したエラーの種類。

なし

はい

Target (対象)

String (文字列)

エラーに対処する必要がある特定のコンポーネントまたはモジュール。

なし

はい

### [](#KafkaMessageAttributes)Kafka Message Attributes (Kafka メッセージ属性)
項目 型 説明 デフォルト値 必須

Channel Name (チャネル名)

String (文字列)

メッセージがパブリッシュまたはコンシュームされる Kafka チャネル (トピック) の名前。

なし

はい

Channel Parameters (チャネルパラメーター)

Object (オブジェクト)

チャネルに固有の追加パラメーターまたは設定。

なし

いいえ

Creation Timestamp (作成時のタイムスタンプ)

DateTime

メッセージが作成されたときのタイムスタンプ。

なし

いいえ

Headers (ヘッダー)

Object (オブジェクト)

メッセージに関連付けられたメタデータ (通常はキー-値ペア)

なし

いいえ

Key (キー)

String (文字列)

このキーにより、メッセージが送信される Kafka トピック内のパーティションが決まります。

なし

いいえ

Leader Epoch (リーダーエポック)

Number

メッセージが送信された時点のリーダーブローカーのエポック。

なし

いいえ

Log Append Timestamp (ログに追加されるタイムスタンプ)

DateTime

メッセージがログに追加されたときのタイムスタンプ。

なし

いいえ

Offset (オフセット)

Number (数値)

Kafka トピックパーティション内のメッセージオフセット。

なし

いいえ

Partition (パーティション)

Number (数値)

メッセージが保存される Kafka トピック内のパーティション。

なし

いいえ

Protocol (プロトコル)

String (文字列)

Kafka サーバーが使用するプロトコル。

なし

いいえ

Server Name (サーバー名)

String (文字列)

メッセージを処理する Kafka サーバーの名前。

なし

はい

### [](#AnypointMqMessageAttributes)Anypoint MQ メッセージの属性
項目 型 説明 デフォルト値 必須

Ack Token (Ack トークン)

String (文字列)

メッセージの受信を確認するために使用されるトークン。

なし

いいえ

Channel Name (チャネル名)

String (文字列)

メッセージがパブリッシュまたはコンシュームされる Anypoint MQ チャネルの名前。

なし

はい

Channel Parameters (チャネルパラメーター)

Object (オブジェクト)

チャネルに固有の追加パラメーターまたは設定。

なし

いいえ

Content-Type (コンテンツタイプ)

String (文字列)

メッセージコンテンツの MIME タイプ。

なし

いいえ

Delivery Count (配信数)

Number (数値)

メッセージが配信された回数。

なし

いいえ

Headers (ヘッダー)

Object (オブジェクト)

メッセージに関連付けられたメタデータ (通常はキー-値ペア)

なし

いいえ

Message Id (メッセージ ID)

String (文字列)

メッセージの一意の識別子。

なし

はい

Properties (プロパティ)

Object (オブジェクト)

メッセージに関連付けられたカスタムプロパティ。

なし

いいえ

Protocol (プロトコル)

String (文字列)

Anypoint MQ サーバーが使用するプロトコル。

なし

いいえ

Server Name (サーバー名)

String (文字列)

メッセージを処理する Anypoint MQ サーバーの名前。

なし

はい

### [](#SolaceMessageAttributes)Solace メッセージ属性
項目 型 説明 デフォルト値 必須

DMQ Eligible (DMQ 対象)

Boolean (ブール)

メッセージがデッドメッセージキューの対象かどうかを示します。

False

いいえ

Channel Name (チャネル名)

String (文字列)

メッセージがパブリッシュまたはコンシュームされる Solace チャネルの名前。

なし

いいえ

Channel Parameters (チャネルパラメーター)

Object (オブジェクト)

Solace チャネルに固有の追加パラメーターまたは設定。

なし

いいえ

Content-Type (コンテンツタイプ)

String (文字列)

メッセージコンテンツの MIME タイプ。

なし

いいえ

Delivery Mode (配信モード)

String (文字列)

メッセージの配信モード。

なし

いいえ

Discard Indication (破棄の表示)

Boolean (ブール)

メッセージが破棄されたかどうかを示します。

False

いいえ

Eliding Eligible (省略対象)

Boolean (ブール)

メッセージが省略の対象かどうかを示します。

False

いいえ

エンドポイント種別

String (文字列)

使用するエンドポイントの種別。

なし

いいえ

Message Reference Id (メッセージ参照 ID)

String (文字列)

メッセージの参照識別子。

なし

いいえ

Priority (優先度)

Number (数値)

メッセージの優先度。

0

いいえ

Protocol (プロトコル)

String (文字列)

Solace サーバーが使用するプロトコル。

なし

いいえ

Receive Timestamp (受信タイムスタンプ)

DateTime

メッセージが受信されたときのタイムスタンプ。

なし

いいえ

Redelivered (再配信済み)

Boolean (ブール)

メッセージが再配信されたかどうかを示します。

False

いいえ

Reply (返信)

Boolean (ブール)

メッセージの返信が要求されているかどうかを示します。

False

いいえ

Server Name (サーバー名)

String (文字列)

メッセージを処理する Solace サーバーの名前。

なし

はい

Time To Live (存続期間)

Number (数値)

メッセージが有効な残り時間 (ミリ秒)。

0

いいえ

### [](#SalesforcePubSubAttributes)Salesforce Pub/Sub 属性
項目 型 説明 デフォルト値 必須

Channel Name (チャネル名)

String (文字列)

メッセージがパブリッシュまたはコンシュームされる Salesforce Pub/Sub チャネルの名前。

なし

いいえ

Channel Parameters (チャネルパラメーター)

Object (オブジェクト)

Salesforce Pub/Sub チャネルに固有の追加パラメーターまたは設定。

なし

いいえ

Protocol (プロトコル)

String (文字列)

Salesforce Pub/Sub サーバーが使用するプロトコル。

なし

いいえ

Server Name (サーバー名)

String (文字列)

メッセージを処理する Salesforce Pub/Sub サーバーの名前。

なし

いいえ

# APIkit for GraphQL GraphQL は、API コンシューマーが自身にのみ関連するデータを要求できるようにするデータクエリおよび操作言語です。APIkit for GraphQL モジュールは、Anypoint Code Builder と連携して、Mule アプリケーションを開発できるようにします。このモジュールは、コネクタを使用して GraphQL API をソースデータが保存されている既存のバックエンドにマッピングする GraphQL サービスの実装をサポートします。 APIkit スキャフォルダーを使用すると、設計時に GraphQL スキーマに基づいてアプリケーションの初期スケルトンを生成することで、プロジェクトをすばやく実装できます。アプリケーション設計では、API のクエリ、変異、型が Mule フローにマッピングされるため、必要なのはデータソースと各データ型との関係のみを指定することだけです。 実行時には、APIkit for GraphQL ルーターがクエリグラフを分析して、要求に基づいて Mule フローの実行を調整します。各フロー実行の結果が組み合わされ、要求されたクエリを反映した結果が返されます。 ## [](#関連情報)関連情報 - [GraphQL API の実装](https://docs.mulesoft.com/jp/anypoint-code-builder/tut-graphql-implement-api) - [データソースへの GraphQL API のマッピング](https://docs.mulesoft.com/jp/apikit/latest/apikit-graphql-api-mapping) - [GraphQL API 実装の照会](https://docs.mulesoft.com/jp/apikit/latest/apikit-graphql-api-implementation) - [APIkit for GraphQL Module リファレンス](https://docs.mulesoft.com/jp/apikit/latest/apikit-graphql-module-reference) # APIkit for GraphQL Module リファレンス ## [](#設定)設定 ### [](#設定-2)設定 デフォルト設定 #### [](#パラメーター)パラメーター

名前

型

説明

デフォルト値

必須

Name (名前)

String (文字列)

この設定の名前。コネクタはこの名前の設定を参照します。

x

API definition (API 定義)

String (文字列)

API 定義リソースへのパスを定義します。例: resource::7ddfc767-c5b3-4583-9997-a468e251acd2:posts:1.0.0:graphql:zip:api.graphql

x

Introspection Enabled (イントロスペクション有効)

Boolean (ブール)

スキーマのイントロスペクションを有効化します。

false

Max Query Depth Allowed (最大クエリ深度)

Number (数値)

クエリで許される最大深度。値は 1 よりも大きい必要があります。

100

Max Query Complexity Allowed (最大クエリ複雑さ)

Number (数値)

クエリに含めることができるデータ項目の最大数。値は 1 よりも大きい必要があります。

100

Name (名前)

String (文字列)

他のコンポーネント内のこの要素を参照するために使用するこの要素の識別子。

x

#### [](#関連操作)関連操作 - [Route (ルート)](#route) - [Serialize (シリアル化)](#serialize) - [Serialize Batch (バッチシリアル化)](#serialize-batch) #### [](#関連付けられたソース)関連付けられたソース - [データフェッチャー](#data-fetcher) - [データローダー](#data-loader) ## [](#操作)操作 ### [](#route-ルート)Route (ルート) `` #### [](#パラメーター-2)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

使用する設定の名前。

x

Content (コンテンツ)

任意

メッセージのコンテンツ (通常はペイロード)

#[payload]

Output MIME Type (出力 MIME タイプ)

String (文字列)

この操作で出力されるペイロードの MIME タイプ。

Output Encoding (出力エンコード)

String (文字列)

この操作で出力されるペイロードのエンコード。

Config Ref (設定参照)

ConfigurationProvider

このコンポーネントを実行するために使用する設定の名前。

x

Streaming Strategy (ストリーミング戦略)

反復可能なストリーミング戦略の設定。

Target Variable (対象変数)

String (文字列)

操作の出力が配置される変数の名前。

Target Value (対象値)

String (文字列)

操作の出力に対して評価される式。その式の結果は対象変数に保存されます。

#[payload]

#### [](#出力)出力

Type (型)

任意

#### [](#設定-3)設定 - [設定](#config) ### [](#serialize-シリアル化)Serialize (シリアル化) `` #### [](#パラメーター-3)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

使用する設定の名前。

x

Inbound Content (インバウンドコンテンツ)

任意

メッセージのコンテンツ (通常はペイロード)

#[payload]

Config Ref (設定参照)

ConfigurationProvider

このコンポーネントを実行するために使用する設定の名前。

x

Object Type Name (オブジェクト種別名)

String (文字列)

オブジェクト種別名。

x

Field Name (項目名)

String (文字列)

項目名。

Target Variable (対象変数)

String (文字列)

操作の出力が配置される変数の名前。

Target Value (対象値)

String (文字列)

操作の出力に対して評価される式。その式の結果は対象変数に保存されます。

#[payload]

#### [](#出力-2)出力

Type (型)

任意

#### [](#設定-4)設定 - [設定](#config) ### [](#serialize-batch-バッチシリアル化)Serialize Batch (バッチシリアル化) `` #### [](#パラメーター-4)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

使用する設定の名前。

x

Object Type Name (オブジェクト種別名)

String (文字列)

オブジェクト種別名。

x

Inbound Content (インバウンドコンテンツ)

任意

メッセージのコンテンツ (通常はペイロード)

#[payload]

Config Ref (設定参照)

ConfigurationProvider

このコンポーネントを実行するために使用する設定の名前。

x

Target Variable (対象変数)

String (文字列)

操作の出力が配置される変数の名前。

Target Value (対象値)

String (文字列)

操作の出力に対して評価される式。その式の結果は対象変数に保存されます。

#[payload]

#### [](#出力-3)出力

型

任意

#### [](#設定-5)設定 - [設定](#config) ## [](#ソース)ソース ### [](#データフェッチャー)データフェッチャー `` #### [](#パラメーター-5)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

使用する設定の名前。

x

Output MIME Type (出力 MIME タイプ)

String (文字列)

この操作で出力されるペイロードの MIME タイプ。

Output Encoding (出力エンコード)

String (文字列)

この操作で出力されるペイロードのエンコード。

Config Ref (設定参照)

ConfigurationProvider

このコンポーネントを実行するために使用する設定の名前。

x

Primary Node Only (プライマリノードのみ)

Boolean (ブール)

クラスターでの実行時、このソースをプライマリノード上でのみ実行する必要があるかどうか。

Streaming Strategy (ストリーミング戦略)

反復可能なストリーミング戦略の設定。

Redelivery Policy (再配信ポリシー)

同じメッセージの再配信を処理するためのポリシー。

Object Type Name (オブジェクト種別名)

String (文字列)

オブジェクト種別名。

x

Field Name (項目名)

String (文字列)

項目名。

Body Content (本文コンテンツ)

任意

メッセージのコンテンツ (通常はペイロード)

#[payload]

#### [](#出力-4)出力

型

任意

Attributes Type (属性型)

* Data Fetcher Attributes (データフェッチャー属性)

#### [](#設定-6)設定 - [設定](#config) ### [](#データローダー)データローダー `` #### [](#パラメーター-6)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

使用する設定の名前。

x

Object Type Name (オブジェクト種別名)

String (文字列)

オブジェクト種別名。

x

Config Ref (設定参照)

ConfigurationProvider

このコンポーネントを実行するために使用する設定の名前。

x

Primary Node Only (プライマリノードのみ)

Boolean (ブール)

クラスターでの実行時、このソースをプライマリノード上でのみ実行する必要があるかどうか。

Redelivery Policy (再配信ポリシー)

同じメッセージの再配信を処理するためのポリシー。

Body Content (本文コンテンツ)

任意

メッセージのコンテンツ (通常はペイロード)

#[payload]

#### [](#出力-5)出力

型

Any の配列

#### [](#設定-7)設定 - [設定](#config) ## [](#型)型 ### [](#data-fetcher-attributes-データフェッチャー属性)Data Fetcher Attributes (データフェッチャー属性)
項目 型 説明 デフォルト値 必須

Alias (別名)

String (文字列)

照会された項目の別名

false

Arguments (引数)

Object (オブジェクト)

照会された項目の引数

false

Selected Fields (選択済みの項目)

Object (オブジェクト)

この複合型から選択されたサブ項目のマップ

Source (ソース)

Any (任意)

取得した項目の親の実際の値

false

### [](#repeatable-in-memory-stream-反復可能なメモリ内ストリーム)Repeatable In Memory Stream (反復可能なメモリ内ストリーム)
項目 型 説明 デフォルト値 必須

Initial Buffer Size (初期バッファサイズ)

Number (数値)

ストリームをコンシュームし、ランダムアクセスを提供するために割り当てられるメモリ量。ストリームにバッファ容量を超えるデータが含まれる場合、バッファは ​bufferSizeIncrement​ 属性に従って上限の ​maxInMemorySize​ まで拡張されます。

Buffer Size Increment (バッファサイズ増分)

Number (数値)

バッファサイズが初期サイズを超えた場合に、どれだけ拡張するか。値を 0 またはそれ以下に設定すると、バッファは拡張されません。バッファが満杯になると ​STREAM_MAXIMUM_SIZE_EXCEEDED​ エラーが返されます。

Max Buffer Size (最大バッファサイズ)

Number (数値)

使用されるメモリの最大量。これを超えると、​STREAM_MAXIMUM_SIZE_EXCEEDED​ エラーが発生します。0 以下の値は無制限を意味します。

Buffer Unit (バッファ単位)

Enumeration (列挙)。次のいずれかになります。

  • BYTE (バイト)

  • KB

  • MB

  • GB

これらの属性は、この単位で表されます。

### [](#repeatable-file-store-stream-反復可能なファイルストアストリーム)Repeatable File Store Stream (反復可能なファイルストアストリーム)
項目 型 説明 デフォルト値 必須

In Memory Size (メモリ内サイズ)

Number (数値)

データをメモリ内に保持するためにストリームで使用する最大メモリを定義します。このサイズを超えると、ストリームはコンテンツをディスクにバッファします。

Buffer Unit (バッファ単位)

Enumeration (列挙)。次のいずれかになります。

  • BYTE (バイト)

  • KB

  • MB

  • GB

maxInMemorySize​ を表す単位。

### [](#redelivery-policy-再配信ポリシー)Redelivery Policy (再配信ポリシー)
項目 型 説明 デフォルト値 必須

Max Redelivery Count (最大再配信数)

Number (数値)

処理失敗メッセージをトリガーするまでに、メッセージを再配信して処理を失敗できる最大回数。

Message Digest Algorithm (メッセージダイジェストアルゴリズム)

String (文字列)

使用するセキュアハッシュアルゴリズム。設定しない場合、デフォルトの SHA-256 になります。

Message Identifier (メッセージ識別子)

メッセージを識別するために使用する戦略。

Object Store (オブジェクトストア)

ObjectStore

各メッセージの再配信カウンターが保存されるオブジェクトストア。

### [](#redelivery-policy-message-identifier-再配信ポリシーメッセージ識別子)Redelivery Policy Message Identifier (再配信ポリシーメッセージ識別子)
項目 型 説明 デフォルト値 必須

Use Secure Hash (セキュアハッシュを使用)

Boolean (ブール)

再配信されたメッセージの識別にセキュアハッシュアルゴリズムを使用するかどうか。

Id Expression (ID 式)

String (文字列)

メッセージがいつ再配信されたのかを判断するために使用する式。このプロパティは、useSecureHash が false の場合にのみ設定できます。

# APIkit for OData V2 APIkit for OData v2 は、OData v2 仕様に準拠した RESTful API の開発を簡素化するフレームワークです。OData は Open Data Protocol とも呼ばれ、RESTful API の作成とコンシュームを可能にします。これにより、標準の HTTP 要求を通じてデータの照会と操作が可能になります。 APIkit for OData v2 は、APIkit for REST の拡張機能です。APIkit for REST を基盤として構築されており、RAML API を使用します。APIkit for OData v2 と APIkit for REST のこのインテグレーションにより、それぞれの機能と利点が組み合わされます。 ただし、APIkit for OData v2 で提供される機能は、OData やその他のフレームワークの新しいバージョンよりも少なくなっています。APIkit for OData v2 が特定のユースケースに適切な選択であるかどうかを判断するときは、これらの制限を考慮してください。 OData v2 は依然広く使用されていますが、OData v4 が最新のメジャーバージョンです。クエリ機能の改善や他の Web 標準との整合性の向上など、いくつかの機能強化が導入されています。 ## [](#関連情報)関連情報 - [APIkit for OData V4](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-for-odatav4) - [OData V2 ツールのインストール](https://docs.mulesoft.com/jp/apikit/latest/install-odatav2-tooling) # APIkit for OData v2 API リファレンス RAML を使用して作成したエンティティデータモデル (EDM) は、OData API をビルドするための基盤となります。EDM 互換のデータ型を使用して、このリファレンスで説明されているように ​`odata.raml`​ ファイルを作成します。APIkit OData 拡張を使用してフローを生成したら、API エンドポイントを実装する必要があります。 ## [](#エンティティデータモデル)エンティティデータモデル APIkit OData 拡張は、サポートされる EDM 型を使用して OData エンティティデータモデル (EDM) を記述する ​`odata.raml`​ に基づいて OData API をビルドします。​`odata.raml`​ ファイルは RAML ライブラリです。各 DataType は EntityModel を表します。次に例を示します。 ```yaml #%RAML 1.0 Library uses: odata: !include libraries/odata.raml types: Employee: properties: id: type: integer (odata.key): bool (odata.nullable): bool name: type: string ``` アノテーション (odata.key) を使用して、各エンティティの少なくとも 1 つのプロパティにアノテーションを追加します。 次のアノテーションは各プロパティに関連します。 ```yaml (odata.precision): int (odata.scale): int ``` 省略可能な (odata.remote) アノテーションを使用して、リモートデータソースのエンティティの名前を指定します。 ```yaml types: Employee: (odata.remote): SAP_VBAK properties: ... ``` ## [](#サポートされる-edm-データ型)サポートされる EDM データ型 APIkit OData 拡張では、Edm.Sbyte 以外のすべての EDM 型がサポートされています。モデル内で、次のサポートされる EDM 型のリストに示されている EDM 型にマップする RAML 型を定義します。 ### [](#edm-string)Edm.String String (文字列) 型は、固定長または可変長の文字データを表します。 RAML ​`type: string` ### [](#edm-boolean)Edm.Boolean Boolean (ブール) データ型は、バイナリ値ロジックの数学的概念を表すために使用されます。この型に該当するファセットはありません。 RAML ​`type: boolean` ### [](#edm-double)Edm.Double Double (倍精度浮動小数点数) 型は、± 2.23e -308 から ± 1.79e +308 までのおおよその範囲の値を表すことができる 15 桁の精度の浮動小数点数を表します。 RAML ​`type: number` ### [](#edm-single)Edm.Single Single (単一) 型は、± 1.18e -38 から ± 3.40e +38 までのおおよその範囲の値を表すことができる 7 桁の精度の浮動小数点数を表します。 RAML ​`type: number` RAML ​`format: float` ### [](#edm-binary)Edm.Binary binary (バイナリ) データ型は、固定長または可変長のバイナリデータを表します。 RAML ​`type: file` ### [](#edm-datetime)Edm.DateTime DateTime (日時) 型は、西暦 1753 年 1 月 1 日午前 0 時から西暦 9999 年 12 月 31 日午後 11:59:59 までの範囲の値の日時を表します。 RAML ​`type: datetime-only` ### [](#edm-int32)Edm.Int32 Int32 型は、符号付き 32 ビット整数値を表します。 RAML ​`type: integer` ### [](#edm-int64)Edm.Int64 Int64 型は、符号付き 64 ビット整数値を表します。 RAML ​`type: integer` RAML ​`format: int64` ### [](#edm-int16)Edm.Int16 Int16 型は、符号付き 16 ビット整数値を表します。 RAML ​`type: integer` RAML ​`format: int16` ### [](#edm-byte)Edm.Byte Byte (バイト) 型は、符号なし 8 ビット整数値を表します。 RAML ​`type: integer` RAML ​`format: int8` ### [](#edm-decimal)Edm.Decimal Decimal (小数) 型は、精度と桁数が固定された数値を表します。これらの省略可能なプロパティを変更して、必要な精度と桁数を指定できます。この型は、負の 10^255 + 1 から正の 10^255 -1 までの範囲の数値を表示できます。 RAML ​`type: number` RAML ​`(odata.precision): 3` RAML ​`(odata.scale): 3` ### [](#edm-guid)Edm.Guid グローバル一意識別子 (GUID) 型は、UUID 標準 (RFC 4122) に準拠している 16 バイト (128 ビット) の番号を表します。 RAML ​`type: string` RAML ​`(odata.type): guid` ### [](#edm-time)Edm.Time Time (時間) 型は、0:00:00.x から 23:59:59.y までの範囲の値の時刻を表します。x と y は精度によって異なります。 RAML ​`type: time-only` ### [](#edm-datetimeoffset)Edm.DateTimeOffset DateTimeOffset 型は、西暦 1753 年 1 月 1 日午前 0 時から西暦 9999 年 12 月 31 日午後 11:59:59 までの範囲の値の GMT からのオフセット (分) で日時を表します。 RAML ​`type: datetime` # APIkit for OData v2 Module リファレンス APIkit for OData v2 の連動関係、名前空間、スキーマ情報に関する基礎を学び、コラボレーション、アプリケーションの構築、コードベースの管理を行います。 ## [](#連動関係情報)連動関係情報 APIkit for REST モジュール連動関係を使用して、APIkit for OData v2 拡張機能を宣言します。 org.mule.modules mule-module-apikit-odata 2.2.0 **(1)** mule-plugin org.mule.modules mule-apikit-module 1.8.3 **(1)** mule-plugin
1このツールは、互換性を保証するためにスキャフォールディングを行うときに、各連動関係の適切なバージョンを決定します。連動関係のバージョンを手動で設定すると、問題が発生する可能性があります。各コンポーネントを最新バージョンにアップグレードする前に、 APIkit リリースノート​を参照してください。
Anypoint Studio プラグインを更新して、ツールが適切な連動関係の組み合わせを決定できるようにします。
## [](#名前空間とスキーマ)名前空間とスキーマ xmlns:apikit="http://www.mulesoft.org/schema/mule/mule-apikit" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/mule-apikit http://www.mulesoft.org/schema/mule/mule-apikit/current/mule-apikit.xsd" ## [](#関連情報)関連情報 - [APIkit for REST Module リファレンス](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-xml-reference) # APIkit for OData V4 APIkit for OData v4 は、OData v4 仕様に準拠した RESTful API の開発を簡素化するフレームワークです。OData は Open Data Protocol とも呼ばれ、RESTful API の作成とコンシュームを可能にします。これにより、標準の HTTP 要求を通じてデータの照会と操作が可能になります。 APIkit for OData を使用すると、OData 要求を処理して OData API を作成する Mule フローを生成できます。たとえば、従来の API を OData API として公開したり、Salesforce で公開する前にデータを調整および変換したり、Oracle、DB2、Azure DB などのデータベース用の双方向の OData API を作成したりできます。 APIkit for OData v2 拡張機能は RAML API に基づいていますが、APIkit for OData v4 は、OData サービスで使用されるエンティティデータモデル (EDM) を活用して HTTP ベースのデータサービスを構築します。EDM は、OData サービス内のリソースの説明と構造を形式化します。 ## [](#関連情報)関連情報 - [APIkit for OData V2](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-for-odatav2) - [OData V4 ツールのインストール](https://docs.mulesoft.com/jp/apikit/latest/install-odatav4-tooling) # APIkit for OData v4 Module リファレンス APIkit for OData v4 の連動関係、名前空間、スキーマ情報に関する基礎を学び、コラボレーション、アプリケーションの構築、コードベースの管理を行います。 ## [](#連動関係情報)連動関係情報 org.mule.modules mule-odata-module LATEST\_VERSION **(1)** mule-plugin
1LATEST_VERSION​ を入手するには、 APIkit リリースノート​を確認してください。
## [](#名前空間とスキーマ)名前空間とスキーマ xmlns:apikit-odata="http://www.mulesoft.org/schema/mule/apikit-odata" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/apikit-odata http://www.mulesoft.org/schema/mule/apikit-odata/current/mule-apikit-odata.xsd" ## [](#設定)設定 ### [](#設定-2)設定 デフォルト設定 #### [](#パラメーター)パラメーター
名前 型 説明 デフォルト値 必須

Name (名前)

String (文字列)

この設定の名前。コネクタはこの名前の設定を参照します。

はい

Api Definition (API 定義)

String (文字列)

API 定義。

はい

Name (名前)

String (文字列)

他のコンポーネント内のこの要素を参照するために使用するこの要素の識別子。

はい

#### [](#関連操作)関連操作 - [\[route\]](#route) - [Serialize Entity](#serialize-entity) - [Serialize Entity Collection](#serialize-entity-collection) - [Transform to SQL Select](#transform-to-sql-select) #### [](#関連付けられたソース)関連付けられたソース - [RequestEntityCollectionListener](#on-entity-collection-request) - [RequestEntityListener](#on-entity-request) ## [](#操作)操作 ## [](#route-ルート)Route (ルート) `` ### [](#パラメーター-2)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

使用する設定の名前。

はい

Content (コンテンツ)

Any (任意)

#[payload]

いいえ

Route correlation Id (ルート相関 ID)

Boolean (ブール)

後続のフロー全体で一貫した相関 ID。

true

いいえ

Output MIME Type (出力 MIME タイプ)

String (文字列)

この操作で出力されるペイロードの MIME タイプ。

いいえ

Output Encoding (出力エンコード)

String (文字列)

この操作で出力されるペイロードのエンコード。

いいえ

Config Ref (設定参照)

ConfigurationProvider

このコンポーネントを実行するために使用する設定の名前。

はい

Streaming Strategy (ストリーミング戦略)

反復可能なストリームとその動作を使用するかどうかを設定します。

いいえ

Method (メソッド)

Enumeration (列挙)。次のいずれかになります。

  • GET

  • POST

  • PUT

  • PATCH

  • DELETE

HTTP 要求メソッド名。

はい

Masked Request Path (マスクされた要求パス)

String (文字列)

OData 要求パス。リスナーに対して相対的。

はい

Scheme (スキーム)

Enumeration (列挙)。次のいずれかになります。

  • HTTP

  • HTTPS

HTTP 要求スキーム。

はい

Host (ホスト)

String (文字列)

要求ホスト。

はい

Listener Path (リスナーパス)

String (文字列)

"*" で終わるリスナーパス。

はい

Http Headers (HTTP ヘッダー)

Object (オブジェクト)

HTTP リクエストヘッダー。

いいえ

クエリ文字列

String (文字列)

HTTP クエリ文字列。

いいえ

Target Variable (対象変数)

String (文字列)

操作の出力が配置される変数の名前。

いいえ

Target Value (対象値)

String (文字列)

操作の出力に対して評価される式。その式の結果は対象変数に保存されます。

#[payload]

いいえ

### [](#output-出力)Output (出力)

型

Any (任意)

Attributes Type (属性型)

RouteOutputAttributes

### [](#次の設定の場合)次の設定の場合 - [設定](#config) ### [](#スロー)スロー - APIKIT-ODATA:DESERIALIZATION - APIKIT-ODATA:INTERNAL\_SERVER\_ERROR​ - APIKIT-ODATA:MALFORMED\_SEARCH​ - APIKIT-ODATA:MALFORMED\_URI​ - APIKIT-ODATA:NOT\_FOUND​ - APIKIT-ODATA:NOT\_IMPLEMENTED​ - APIKIT-ODATA:SERIALIZATION - APIKIT-ODATA:TRANSFORMATION - APIKIT-ODATA:EXPANSION ## [](#serialize-entity)Serialize Entity `` ### [](#パラメーター-3)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

使用する設定の名前。

はい

Inbound Content (インバウンドコンテンツ)

Binary (バイナリ)

#[payload]

いいえ

Output MIME Type (出力 MIME タイプ)

String (文字列)

この操作で出力されるペイロードの MIME タイプ。

いいえ

Output Encoding (出力エンコード)

String (文字列)

この操作で出力されるペイロードのエンコード。

いいえ

Config Ref (設定参照)

ConfigurationProvider

このコンポーネントを実行するために使用する設定の名前。

はい

Streaming Strategy (ストリーミング戦略)

反復可能なストリームとその動作を使用するかどうかを設定します。

いいえ

Method (メソッド)

Enumeration (列挙)。次のいずれかになります。

  • GET

  • POST

  • PUT

  • PATCH

  • DELETE

HTTP メソッド。

はい

Path (パス)

String (文字列)

エンティティ種別へのパス。

はい

Target Variable (対象変数)

String (文字列)

操作の出力が配置される変数の名前。

いいえ

Target Value (対象値)

String (文字列)

操作の出力に対して評価される式。その式の結果は対象変数に保存されます。

#[payload]

いいえ

### [](#出力)出力

型

Binary (バイナリ)

### [](#次の設定の場合-2)次の設定の場合 - [設定](#config) ## [](#serialize-entity-collection)Serialize Entity Collection `` ### [](#パラメーター-4)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

設定の名前。

はい

Inbound Content (インバウンドコンテンツ)

Binary (バイナリ)

#[payload]

いいえ

Output MIME Type (出力 MIME タイプ)

String (文字列)

この操作で出力されるペイロードの MIME タイプ。

いいえ

Output Encoding (出力エンコード)

String (文字列)

この操作で出力されるペイロードのエンコード。

いいえ

Config Ref (設定参照)

ConfigurationProvider

このコンポーネントを実行するために使用する設定の名前。

はい

Streaming Strategy (ストリーミング戦略)

反復可能なストリームとその動作を使用するかどうかを設定します。

いいえ

Method (メソッド)

Enumeration (列挙)。次のいずれかになります。

  • GET

  • POST

  • PUT

  • PATCH

  • DELETE

HTTP メソッド。

はい

Path (パス)

String (文字列)

エンティティ種別へのパス。

はい

Target Variable (対象変数)

String (文字列)

操作の出力が配置される変数の名前。

いいえ

Target Value (対象値)

String (文字列)

操作の出力に対して評価される式。その式の結果は対象変数に保存されます。

#[payload]

いいえ

### [](#出力-2)出力

型

Binary (バイナリ)

### [](#次の設定の場合-3)次の設定の場合 - [設定](#config) ## [](#transform-to-sql-select)Transform to SQL Select `` ### [](#パラメーター-5)パラメーター
名前 型 説明 デフォルト値 必須

Config Ref (設定参照)

ConfigurationProvider

このコンポーネントを実行するために使用する設定の名前。

はい

Configuration (設定)

String (文字列)

使用する設定の名前。

はい

Database Schema (データベーススキーマ)

String (文字列)

エンティティセットが属するデータベーススキーマ名。空でない場合、​WHERE​ 句でテーブル名にプレフィックスが付けられます。

いいえ

Entity Set Name (エンティティセット名)

String (文字列)

要求されたエンティティセットのデータベース内のテーブル名。

はい

Entity Type Fields (エンティティ種別項目)

Array of String (文字列の配列)

エンティティ種別のプロパティ項目のリスト。

はい

Entity Type Keys (エンティティ種別キー)

Object (オブジェクト)

エンティティキー名と値のマップ。

はい

Entity Type Name (エンティティ種別名)

String (文字列)

エンティティデータモデルにより、エンティティ種別名が指定されます。

はい

Page Size (ページサイズ)

Number (数値)

いいえ

searchFieldsAsType

Object (オブジェクト)

$search​ 操作で項目が型キャストされるデータ型。空の場合、型キャストは実行されません

いいえ

Search Transformation Enabled (検索変換を有効化)

Boolean (ブール)

WHERE​ 句への ​$search​ 変換を有効にします。

true

いいえ

Sql Identifiers Delimiter (SQL 識別子の区切り文字)

Enumeration (列挙)。次のいずれかになります。

  • DOUBLE_QUOTES​

  • BRACKETS

  • BACK_TICKS​

識別子を区切るオプション。

いいえ

Sql Limit Rows (SQL 制限行数)

Enumeration (列挙)。次のいずれかになります。

  • LIMIT

  • FETCH_NEXT_ROWS_ONLY​

行数を制限するオプション。

いいえ

Strict Search Term Match (厳密な検索語の一致)

Boolean (ブール)

$search​ で完全一致を有効にします。有効になっている場合、​WHERE​ 句内の用語は「%」で囲まれません。

false

いいえ

Streaming Strategy (ストリーミング戦略)

反復可能なストリームとその動作を使用するかどうかを設定します。

いいえ

System Query Options (システムクエリオプション)

Object (オブジェクト)

システムクエリオプションマップ。システムクエリオプションの文法と構文のルールは [OData-ABNF] で定義されています。より使いやすくするために、DataWeave 内のエスケープを回避するように最初のドル記号は削除されます。たとえば、システムクエリオプション ​$skip​ にアクセスするには、式 #[attributes.systemQueryOptions.'skip'] を使用します。

はい

Target Value (対象値)

String (文字列)

操作の出力に対して評価される式。その式の結果は対象変数に保存されます。

#[payload]

いいえ

Target Variable (対象変数)

String (文字列)

操作の出力が配置される変数の名前。

いいえ

### [](#出力-3)出力

型

Binary (バイナリ)

Attributes Type (属性型)

* SqlTransformerOutputAttributes

### [](#次の設定の場合-4)次の設定の場合 - [設定](#config) ### [](#スロー-2)スロー - APIKIT-ODATA:INTERNAL\_SERVER\_ERROR​ - APIKIT-ODATA:MALFORMED\_SEARCH​ - APIKIT-ODATA:MALFORMED\_URI​ - APIKIT-ODATA:NOT\_IMPLEMENTED​ - APIKIT-ODATA:TRANSFORMATION ## [](#ソース)ソース ## [](#on-entity-collection-request)On Entity Collection Request `` ### [](#パラメーター-6)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

使用する設定の名前。

はい

Output MIME Type (出力 MIME タイプ)

String (文字列)

この操作で出力されるペイロードの MIME タイプ。

いいえ

Output Encoding (出力エンコード)

String (文字列)

この操作で出力されるペイロードのエンコード。

いいえ

Config Ref (設定参照)

ConfigurationProvider

このコンポーネントを実行するために使用する設定の名前。

はい

Primary Node Only (プライマリノードのみ)

Boolean (ブール)

クラスターでの実行時、このソースをプライマリノード上でのみ実行するかどうかを指定します。

いいえ

Streaming Strategy (ストリーミング戦略)

反復可能なストリームとその動作を使用するかどうかを設定します。

いいえ

Redelivery Policy (再配信ポリシー)

同じメッセージの再配信を処理するためのポリシー。

いいえ

Method (メソッド)

Enumeration (列挙)。次のいずれかになります。

  • GET

  • POST

  • PUT

  • PATCH

  • DELETE

HTTP メソッド。

はい

Path (パス)

String (文字列)

エンティティ種別へのパス。

はい

Collection Success Response (収集成功応答)

いいえ

サポートされるシステムクエリオプション - ​$expand

Boolean (ブール)

$expand​ のサポートを有効にします。

true

いいえ

展開が有効な場合のエラーを無視

Boolean (ブール)

一般的展開がコールするフローからのエラーをこのフローに伝達できないようにします。​true​ の場合、失敗した展開は ​null​ として表示されます。

false

いいえ

展開可能なナビゲーションプロパティ

List<String>

このフローから一般的に展開できる種別のリスト。

[]

いいえ

### [](#出力-4)出力

型

Any (任意)

Attributes Type (属性型)

ListenerRequestAttributes

### [](#次の設定の場合-5)次の設定の場合 - [設定](#config) ## [](#on-entity-request)On Entity Request `` ### [](#パラメーター-7)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

使用する設定の名前。

はい

Output MIME Type (出力 MIME タイプ)

String (文字列)

この操作で出力されるペイロードの MIME タイプ。

いいえ

Output Encoding (出力エンコード)

String (文字列)

この操作で出力されるペイロードのエンコード。

いいえ

Config Ref (設定参照)

ConfigurationProvider

このコンポーネントを実行するために使用する設定の名前。

はい

Primary Node Only (プライマリノードのみ)

Boolean (ブール)

クラスターでの実行時、このソースをプライマリノード上でのみ実行する必要があるかどうか。

いいえ

Streaming Strategy (ストリーミング戦略)

反復可能なストリームとその動作を使用するかどうかを設定します。

いいえ

Redelivery Policy (再配信ポリシー)

同じメッセージの再配信を処理するためのポリシー。

いいえ

Method (メソッド)

Enumeration (列挙)。次のいずれかになります。

  • GET

  • POST

  • PUT

  • PATCH

  • DELETE

HTTP メソッド。

はい

Path (パス)

String (文字列)

エンティティ種別へのパス。

はい

サポートされるシステムクエリオプション - ​$expand

Boolean (ブール)

$expand​ のサポートを有効にします。

true

いいえ

展開が有効な場合のエラーを無視

Boolean (ブール)

一般的展開がコールするフローからのエラーをこのフローに伝達できないようにします。​true​ の場合、失敗した展開は ​null​ として表示されます

false

いいえ

展開可能なナビゲーションプロパティ

List<String>

このフローから一般的に展開できる種別のリスト。

[]

いいえ

### [](#出力-5)出力

型

Any (任意)

Attributes Type (属性型)

ListenerRequestAttributes

### [](#次の設定の場合-6)次の設定の場合 - [設定](#config) ## [](#型)型 ### [](#listener-request-attributes-リスナー要求属性)Listener Request Attributes (リスナー要求属性)
項目 型 説明 デフォルト値 必須

Entity Set Name (エンティティセット名)

String (文字列)

Odata Http Attributes (OData HTTP 属性)

いいえ

Odata Request Attributes (Odata 要求属性)

いいえ

### [](#odata-http-attributes-odata-http-属性)OData Http Attributes (OData HTTP 属性)
項目 型 説明 デフォルト値 必須

Headers (ヘッダー)

Object (オブジェクト)

いいえ

Method (メソッド)

Enumeration (列挙)。次のいずれかになります。

  • GET

  • POST

  • PUT

  • PATCH

  • DELETE

Raw Base Uri (未加工ベース URI)

String (文字列)

いいえ

Raw Odata Path (未加工データパス)

String (文字列)

いいえ

Raw Query Path (未加工クエリパス)

String (文字列)

いいえ

Raw Request Uri (未加工要求 URI)

String (文字列)

いいえ

Scheme (スキーム)

Enumeration (列挙)。次のいずれかになります。

  • HTTP

  • HTTPS

いいえ

### [](#odata-request-attributes-odata-要求属性)OData Request Attributes (Odata 要求属性)
項目 型 説明 デフォルト値 必須

Custom Query Options (カスタムクエリオプション)

Object (オブジェクト)

いいえ

Entity Type Fields (エンティティ種別項目)

Array of String (文字列の配列)

いいえ

Entity Type Keys (エンティティ種別キー)

Object (オブジェクト)

いいえ

Entity Type Name (エンティティ種別名)

String (文字列)

いいえ

System Query Options (システムクエリオプション)

Object (オブジェクト)

いいえ

### [](#repeatable-in-memory-stream-反復可能なメモリ内ストリーム)Repeatable In Memory Stream (反復可能なメモリ内ストリーム)
項目 型 説明 デフォルト値 必須

Initial Buffer Size (初期バッファサイズ)

Number (数値)

ストリームをコンシュームし、ランダムアクセスを提供するために割り当てられたメモリ量。ストリームにバッファ容量を超えるデータが含まれる場合、バッファは ​bufferSizeIncrement​ 属性に従って上限の ​maxInMemorySize​ まで拡張されます。

いいえ

Buffer Size Increment (バッファサイズ増分)

Number (数値)

バッファサイズが初期サイズを超えた場合のサイズの拡張。値を 0 以下に設定すると、バッファが拡張されません。つまり、バッファがフルになると、​STREAM_MAXIMUM_SIZE_EXCEEDED​ エラーが発生します。

いいえ

Max Buffer Size (最大バッファサイズ)

Number (数値)

バッファで使用するメモリの最大量。メモリ使用量がこの制限を超えると、​STREAM_MAXIMUM_SIZE_EXCEEDED​ エラーが発生します。0 以下の値は無制限を意味します。

いいえ

Buffer Unit (バッファ単位)

Enumeration (列挙)。次のいずれかになります。

  • BYTE (バイト)

  • KB

  • MB

  • GB

これらの属性を表現する単位。

いいえ

### [](#repeatable-file-store-stream-反復可能なファイルストアストリーム)Repeatable File Store Stream (反復可能なファイルストアストリーム)
項目 型 説明 デフォルト値 必須

In Memory Size (メモリ内サイズ)

Number (数値)

データをメモリ内に保持するためにストリームで使用する最大メモリ。これを超えると、ディスクへのコンテンツのバッファが開始されます。

いいえ

Buffer Unit (バッファ単位)

Enumeration (列挙)。次のいずれかになります。

  • BYTE (バイト)

  • KB

  • MB

  • GB

maxInMemorySize​ を表す単位。

いいえ

### [](#redelivery-policy-再配信ポリシー)Redelivery Policy (再配信ポリシー)
項目 型 説明 デフォルト値 必須

Max Redelivery Count (最大再配信数)

Number (数値)

正常に処理されずにプロセス失敗メッセージがトリガーされるまでにメッセージを再配信できる最大回数。

いいえ

Message Digest Algorithm (メッセージダイジェストアルゴリズム)

String (文字列)

セキュアハッシュアルゴリズム (デフォルト: SHA-256)。

いいえ

Message Identifier (メッセージ識別子)

メッセージを識別する戦略。

いいえ

Object Store (オブジェクトストア)

ObjectStore

各メッセージの再配信カウンターが保存されるオブジェクトストア。

いいえ

### [](#redelivery-policy-message-identifier-再配信ポリシーメッセージ識別子)Redelivery Policy Message Identifier (再配信ポリシーメッセージ識別子)
項目 型 説明 デフォルト値 必須

Use Secure Hash (セキュアハッシュを使用)

Boolean (ブール)

再配信されたメッセージの識別にセキュアハッシュアルゴリズムを使用するかどうか。

いいえ

Id Expression (ID 式)

String (文字列)

メッセージがいつ再配信されるのかを判断する 1 つ以上の式。このプロパティは、​useSecureHash​ が ​false​ の場合に設定できます。

いいえ

### [](#route-output-attributes-ルート出力属性)Route Output Attributes (ルート出力属性)
項目 型 説明 デフォルト値 必須

Headers (ヘッダー)

Object (オブジェクト)

いいえ

状況コード

Number (数値)

いいえ

### [](#sql-transformer-output-attributes-sql-トランスフォーマー出力属性)SQL Transformer Output Attributes (SQL トランスフォーマー出力属性)
項目 型 説明 デフォルト値 必須

Query Parameters (クエリパラメーター)

Object (オブジェクト)

いいえ

### [](#raw-entity-success-response-未加工エンティティ成功応答)Raw Entity Success Response (未加工エンティティ成功応答)
項目 型 説明 デフォルト値 必須

Raw Content (未加工コンテンツ)

Binary (バイナリ)

応答メッセージの未加工応答コンテンツ。

#[payload]

いいえ

### [](#entity-success-response-エンティティ成功応答)Entity Success Response (エンティティ成功応答)
項目 型 説明 デフォルト値 必須

Body Content (本文コンテンツ)

Binary (バイナリ)

応答メッセージの本文。

#[payload]

いいえ

### [](#raw-entity-collection-success-response-未加工エンティティ収集成功応答)Raw Entity Collection Success Response (未加工エンティティ収集成功応答)
項目 型 説明 デフォルト値 必須

Raw Content (未加工コンテンツ)

Binary (バイナリ)

未加工応答メッセージ。

#[payload]

いいえ

### [](#entity-collection-success-response-エンティティ収集成功応答)Entity Collection Success Response (エンティティ収集成功応答)
項目 型 説明 デフォルト値 必須

Body Content (本文コンテンツ)

Binary (バイナリ)

応答メッセージの本文。

#[payload]

いいえ

Serialization Parameters (逐次化パラメーター)

逐次化関連のパラメーターセット。

はい

### [](#serialization-parameters-逐次化パラメーター)Serialization Parameters (逐次化パラメーター)
項目 型 説明 デフォルト値 必須

Count (数)

Number (数値)

いいえ

Page Size (ページサイズ)

Number (数値)

いいえ

Token (トークン)

String (文字列)

いいえ

## [](#関連情報)関連情報 - [エラー処理リファレンス](https://docs.mulesoft.com/jp/apikit/latest/apikit-odatav4-error-handling-reference) # APIkit for REST APIkit for REST を使用すると、業界標準への準拠を確保しながら REST API 開発を合理化できます。APIkit for REST は、RESTful API の開発とインテグレーションを簡素化するために設計されたフレームワークです。REST (Representational State Transfer) は、Web サービスを構築するためのアーキテクチャスタイルです。 APIkit for REST は、RESTful API を記述するために広く採用されている形式の RAML (RESTful API Modeling Language) と OAS (OpenAPI 仕様) を完全にサポートしています。RAML または OAS を使用して API コントラクトを定義し、一貫した設計、強化されたコラボレーション、明確なドキュメントのメリットを得ることができます。 ## [](#機能)機能 - 自動検証 APIkit for REST は、RAML または OAS で定義された API コントラクトに対して受信要求を自動的に検証します。この検証により、要求は API の指定されたルールと制約に準拠するようになります。 - コード生成 このフレームワークは、RESTful API の実装を合理化するのに役立つコード生成機能を提供します。APIkit for REST は、API コントラクトに基づいて実装テンプレートを生成します。 - インテリジェントルーティング APIkit for REST を使用すると、受信要求は定義された API コントラクトに基づいて適切なエンドポイントにインテリジェントに転送されます。 APIkit for REST は、効率的な REST API の開発とインテグレーションのためのツールです。その機能を活用して業界標準に準拠することで、API 開発ライフサイクルを加速し、コラボレーションを向上させ、高品質の RESTful API を提供できます。 ## [](#関連情報)関連情報 - [REST API の構築、実装、テスト](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-implement-rest-api) - [APIkit for REST Module リファレンス](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-xml-reference) # APIkit for REST Module リファレンス 連動関係、名前空間、スキーマ、および APIkit for REST に関するその他の情報についての基礎を学びます。 ## [](#apikit-for-rest-連動関係情報)APIkit for REST 連動関係情報 org.mule.modules mule-apikit-module LATEST\_VERSION **(1)** mule-plugin
1LATEST_VERSION​ を入手するには、 APIkit リリースノート​を確認してください。
## [](#apikit-for-rest-の設定と操作)APIkit for REST の設定と操作
要素名 説明 必須

apikit:config

APIkit 設定。

はい

apikit:console

API Console URL を定義する api-console フロー内の ​http:listener​ 要素の ​config-ref​ のプロパティ。

いいえ

apikit:router

フロー要素内でネストされた REST ルーティングメッセージプロセッサー。

はい

### [](#apikitconfig-の属性)apikit:config の属性 `apikit:config`​ 属性は ​`NonBlankString`​ 型です。
属性名 必須 説明

outboundHeadersMapName

いいえ

応答ヘッダーを含むマップの名前。

httpStatusVarName

いいえ

応答の HTTP 状況コードを保存する変数の名前。

keepRamlBaseUri

いいえ

同等の ​keepApiBaseUri​ 属性の別名。

この属性は、バージョン APIkit 1.2.0 で非推奨になりました。APIkit 1.1.x との互換性を提供するために含まれています。
API 実装では、​keepRamlBaseUri​ の代わりに ​keepApiBaseUri​ を使用します。

name

はい

apikit:router​ などの他の要素が参照する設定名。

raml

はい

同等の ​api​ 属性の別名。

この属性は、バージョン APIkit 1.2.0 で非推奨になりました。APIkit 1.1.x との互換性を提供するために含まれています。
API 実装では、​raml​ の代わりに ​api​ を使用します。

parser

いいえ

要求の検証に使用されるパーサー。

APIkit 1.2.0 以降で有効な属性。

可能な値:

  • AUTO

    APIkit ルーター​は AMF を使用して開始されます。エラーがある場合は、RAML パーサーを使用して開始されます。

  • AMF

    APIkit ルーター​は AMF を使用して API を読み取り、受信要求を検証します。

  • RAML

    APIkit ルーター​は AMF を使用して開始され、エラーがある場合は RAML パーサーを使用して開始されます。

デフォルト値: AUTO。

api

いいえ

ルート API ファイルの場所。

この属性は、APIkit 1.2.0 以降で有効です。

api​ 属性には、​src/main/resources/api​ の下位にあるファイルへの相対パス、または ​API Sync​ リソースパスの任意の URL を使用できます。

keepApiBaseUri

いいえ

APIkit 1.2.0 以降で有効な属性。

false​ に設定すると、API の RAML 定義内の ​baseUri​ が書き換えられます。
true​ に設定すると、​baseUri​ 項目は書き換えられません。

リバースプロキシの背後で APIkit を使用し、​`keepRamlBaseUri`​ を ​`true`​ に設定する場合は、​**API Console**​ を使用してプロキシの URL を​`baseUri`​ プロパティに設定します。 ### [](#apikitrouter-の属性)apikit:router の属性
属性名 必須 説明

disableValidations

いいえ

要求の検証を無効にします。

headerStrictValidation

いいえ

要求ヘッダーが RAML ファイルで定義されているか、既知のヘッダーのセットに属していることを検証します。

queryParamsStrictValidation

いいえ

要求クエリパラメーターが RAML ファイルで定義されていることを検証します。

## [](#apikit-for-rest-の名前空間とスキーマ)APIkit for REST の名前空間とスキーマ xmlns:apikit="http://www.mulesoft.org/schema/mule/mule-apikit" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/mule-apikit http://www.mulesoft.org/schema/mule/mule-apikit/current/mule-apikit.xsd" ## [](#apikit-for-rest-のシステムプロパティ)APIkit for REST のシステムプロパティ
システムプロパティ デフォルト 説明 Since (以降)

mule.xml.expandExternalEntities

false

パーサーが XML 外部エンティティを展開できるようにします。攻撃を防ぐため、デフォルト値は ​false​ です。

1.3.7

mule.xml.expandInternalEntities

false

パーサーが XML 内部エンティティを展開できるようにします。攻撃を防ぐため、デフォルト値は ​false​ です。

1.3.7

apikit.console.disabled

false

コンソールを無効にします。

1.3.7

apikit.console.stream.amf.model

true

AMF パーサーモデルをコンソールにストリーミングします。

1.5.0

raml.json_schema.fail_on_warning

false

RAML パーサーが設定されるときに、ペイロードの検証中に ​warning​ があると失敗します。

1.1.15

yagi.json_duplicate_keys_detection

true

RAML パーサーが設定されるときに、重複する JSON オブジェクト項目名がないことを確認します。

1.1.15

yagi.json_block_unsafe_polymorphic_base_types

true

RAML パーサーが設定されるときに、安全でないベース種別の使用をブロックします。

1.5.0

mule.apikit.parser

AUTO

パーサー種別を上書きします。可能な値:

  • AMF

  • RAML

  • AUTO

1.3.7

apikit.multipart.size.limit

268435456

受信したマルチパートペイロードが制限 (バイト単位) を超えた場合に ​InvalidFormParameterException​ をスローすることで、検証されるマルチパートペイロードのサイズを制限します。

1.8.0

fullDomain

localhost

コンソールの URL を上書きします。

1.1.15

# APIkit for SOAP APIkit for SOAP は、SOAP ベースの API の開発とインテグレーションを簡素化するためのフレームワークです。SOAP (Simple Object Access Protocol) は、Web サービス間で構造化情報を交換するためのメッセージングプロトコルです。APIkit for SOAP は、SOAP メッセージの形式とヘッダーを管理して、SOAP インフラストラクチャとのシームレスなインテグレーションを保証します。APIkit for SOAP を使用すると、堅牢で信頼できる SOAP ベースの API を作成し、開発ワークフローを加速し、強化されたインテグレーション機能を提供できます。 ## [](#apikit-for-soap-の機能)APIkit for SOAP の機能 - SOAP API 開発を合理化し、既存の SOAP インフラストラクチャとのシームレスなインテグレーションを保証します。 - SOAP メッセージの形式とヘッダーの処理が簡素化されるため、API のコアロジックに集中できます。 - WSDL (Web Services Description Language) へのバインドを自動化し、手動による設定作業を軽減し、正確性を確保します。 - データ変換をサポートしています。 - SOAP/WSDL コントラクトを強調することで、SOAP API を簡単に定義および公開できます。 ## [](#関連情報)関連情報 - [APIkit for SOAP の使用を始める前に](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-soap-prerequisites-task) # APIkit for SOAP Module リファレンス ## [](#設定)設定 ### [](#設定-2)設定 **SOAP Router**​ の設定要素。 #### [](#パラメーター)パラメーター
名前 型 説明 デフォルト値 必須

Name (名前)

String (文字列)

コネクタは、この設定名を使用してその設定を参照します。

x

Soap Version (SOAP バージョン)

Enumeration (列挙)。次のいずれかになります。

  • SOAP11

  • SOAP12

WSDL の SOAP バージョン。

Address (住所)

String (文字列)

Web サービスのアドレス。

MTOM Enabled (MTOM 有効)

Boolean (ブール)

MTOM プロトコルが添付ファイルを管理するかどうかを定義します。

false

Inbound Validation Enabled (インバウンド検証有効)

Boolean (ブール)

受信要求のスキーマが検証されるかどうかを定義します。

false

Inbound Validation Message Level (インバウンド検証メッセージレベル)

Enumeration (列挙)。次のいずれかになります。

  • WARN

  • ERROR

受信要求の検証レベルを定義します。​ERROR​ に設定すると、検証は失敗し、フローにエラーが送信されます。

WARN

HTTP Status Var Name (HTTP 状況変数名)

String (文字列)

HTTP 状況の変数名。

httpStatus

Namespace Prefixes (名前空間プレフィックス)

Object (オブジェクト)

応答で指定するカスタム名前空間プレフィックスのマップ。

Expiration Policy (有効期限ポリシー)

動的設定インスタンスがアイドル状態を続けられる最小時間を設定します。この時間が経過すると、Runtime で期限切れに相当するとみなされます。プラットフォームは必ずしも期限切れとみなされた瞬間に期限切れになるわけではありません。必要に応じて、Runtime がインスタンスをパージします。

WSDL Location (WSDL の場所)

String (文字列)

WSDL ファイルの URL、リモートまたはローカル。

x

Service (サービス)

String (文字列)

サービスの名前。

x

Port (ポート)

String (文字列)

ポートの名前。

x

#### [](#関連操作)関連操作 - [Fault (エラー)](#soap-fault) - [Router (ルーター)](#soap-router) ## [](#操作)操作 ### [](#soap-fault)Soap Fault `` APIkit for SOAP エラー #### [](#パラメーター-2)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

設定の名前。

x

Payload (ペイロード)

Binary (バイナリ)

Mule ペイロード。

#[payload]

Streaming Strategy (ストリーミング戦略)

反復可能なストリームとその動作を使用するかどうかを設定します。

Operation (操作)

String (文字列)

WSDL で定義された操作。

x

Fault (エラー)

String (文字列)

選択された操作で定義されたエラー。

x

Target Variable (対象変数)

String (文字列)

操作の出力が配置される変数の名前。

Target Value (対象値)

String (文字列)

操作の出力に対して評価される式。式の結果は対象変数に保存されます。

#[payload]

#### [](#出力)出力

Type (型)

Binary (バイナリ)

#### [](#次の設定の場合)次の設定の場合 - [設定](#config) #### [](#スロー)スロー - APIKIT-SOAP:FAULT - APIKIT-SOAP:ROUTER ### [](#soap-router)SOAP Router `` APIkit for SOAP ルーター #### [](#パラメーター-3)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

設定の名前。

x

Message (メッセージ)

Binary (バイナリ)

Mule ペイロード。

#[payload]

属性

Object (オブジェクト)

Mule メッセージ属性のマップ。

x

Output Mime Type (出力 MIME タイプ)

String (文字列)

この操作で出力されるペイロードの MIME タイプ。

Output Encoding (出力エンコード)

String (文字列)

この操作で出力されるペイロードのエンコード。

Streaming Strategy (ストリーミング戦略)

反復可能なストリームとその動作を使用するかどうかを設定します。

Target Variable (対象変数)

String (文字列)

操作の出力が配置される変数の名前。

Target Value (対象値)

String (文字列)

操作の出力に対して評価される式。式の結果は対象変数に保存されます。

#[payload]

#### [](#出力-2)出力

Type (型)

Binary (バイナリ)

Attributes Type (属性型)

Soap Attributes (SOAP 属性)

#### [](#次の設定の場合-2)次の設定の場合 - [設定](#config) #### [](#スロー-2)スロー - APIKIT-SOAP:FAULT - APIKIT-SOAP:ROUTER ## [](#型)型 ### [](#expiration-policy-有効期限ポリシー)Expiration Policy (有効期限ポリシー)
項目 型 説明 デフォルト値 必須

Max Idle Time (最大アイドル時間)

Number (数値)

有効期限の対象とみなされるまで、動的設定インスタンスがアイドル状態を維持できる最大時間のスカラー時間値。

Time Unit (時間単位)

Enumeration (列挙)。次のいずれかになります。

  • NANOSECONDS (ナノ秒)

  • MICROSECONDS (マイクロ秒)

  • MILLISECONDS (ミリ秒)

  • SECONDS (秒)

  • MINUTES (分)

  • HOURS (時間)

  • DAYS (日)

maxIdleTime​ 属性の時間単位。

### [](#repeatable-in-memory-stream-反復可能なメモリ内ストリーム)Repeatable In Memory Stream (反復可能なメモリ内ストリーム)
項目 型 説明 デフォルト値 必須

Initial Buffer Size (初期バッファサイズ)

Number (数値)

ストリームをコンシュームし、ランダムアクセスを提供するために割り当てられるメモリ量。ストリームにバッファ容量を超えるデータが含まれる場合、バッファは ​bufferSizeIncrement​ 属性に従って上限の ​maxInMemorySize​ まで拡張されます。

Buffer Size Increment (バッファサイズ増分)

Number (数値)

バッファサイズが初期サイズを超えた場合に、拡張する量。値を 0 またはそれ以下に設定すると、バッファは拡張されません。バッファが満杯になると ​STREAM_MAXIMUM_SIZE_EXCEEDED​ エラーが返されます。

Max Buffer Size (最大バッファサイズ)

Number (数値)

使用されるメモリの最大量。これを超えると、​STREAM_MAXIMUM_SIZE_EXCEEDED​ エラーが発生します。0 以下の値は無制限を意味します。

Buffer Unit (バッファ単位)

Enumeration (列挙)。次のいずれかになります。

  • BYTE

  • KB

  • MB

  • GB

これらのすべての属性の単位。

### [](#repeatable-file-store-stream-反復可能なファイルストアストリーム)Repeatable File Store Stream (反復可能なファイルストアストリーム)
項目 型 説明 デフォルト値 必須

In Memory Size (メモリ内サイズ)

Number (数値)

データをメモリ内に保持するためにストリームで使用する最大メモリを定義します。このサイズを超えると、ストリームはコンテンツをディスクにバッファします。

Buffer Unit (バッファ単位)

Enumeration (列挙)。次のいずれかになります。

  • BYTE (バイト)

  • KB

  • MB

  • GB

maxInMemorySize​ で表される単位。

### [](#soap-attributes-soap-属性)SOAP Attributes (SOAP 属性)
項目 型 説明 デフォルト値 必須

Protocol Headers (プロトコルヘッダー)

Object (オブジェクト)

応答にバンドルさるプロトコルヘッダー。

Additional Transport Data (追加トランスポートデータ)

Object (オブジェクト)

応答にバンドルされる追加トランスポートデータ。

# APIkit for SOAP の使用を始める前に APIkit を使用して WSDL ベースの API を作成するための開発環境をセットアップする前に、次の前提条件を満たしていることを確認します。 - 次のソフトウェアをインストールする。 - Studio 7.1 以降 - Mule Runtime Engine 4.1.1 以降 - APIkit for SOAP 1.1 または 1.2 Studio には Anypoint APIkit SOAP 拡張機能が含まれています。 - SOAP クライアントをダウンロードしてインストールする。 例: [SoapUI](https://www.soapui.org/downloads/soapui.html)​。 - WSDL ファイルの URL をダウンロードまたは取得します。 例: [WSDL tshirt2.wsdl](https://docs.mulesoft.com/jp/apikit/latest/_attachments/tshirt2.wsdl)。 ## [](#関連情報)関連情報 - [SOAP インターフェースの実装](https://docs.mulesoft.com/jp/apikit/latest/implementing-apikit-4-for-soap) # APIkit for SOAP プロジェクトの作成 SOAP API 仕様に基づいて新しい Mule プロジェクトを作成します。 始める前に、​[「APIkit for Soap を使用するための前提条件」](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-soap-prerequisites-task)​の要件を満たしていることを確認してください。 1. Anypoint Studio で、​**\[File (ファイル)\]**​ から ​**\[New (新規)\]**​ > ​**\[Mule Project (Mule プロジェクト)\]**​ を選択します。 ![新規 Mule プロジェクトウィンドウで、project-name 項目、ランタイムエンジン、\[From Design Center or Local Files (Design Center またはローカルファイルから)\] タブ、およびファイルを参照するための展開アイコンが強調表示されています](_images/create-new-mule-project-soap.png)
1[Project Name (プロジェクト名)]​ に、プロジェクトの名前を入力します。
例: soap-implementation​。
2Mule Runtime Engine バージョンを選択します。
例: Mule Server 4.2.2 EE​。
3[API Specification (API 仕様)]​ で、​[From Design Center or Local Files (Design Center またはローカルファイルから)]​ を選択します。
4[More actions (追加アクション)]​ メニューから ​[Browse Files (ファイルを参照)]​ を選択します。
1. サービスとポートを選択します。この例では、デフォルト値の ​`TshirtService`​ と ​`TshirtServicePort`​ を受け入れます。 ![API 仕様ウィンドウのメニューから、サービスとポートが強調表示されていま。](/mulesoft/current/ja-jp/apikit/latest/_images/create-apikit-soap-project.png) 2. **\[Finish (完了)\]**​ をクリックします。 新しいプロジェクトと、​`src/main/resources/api`​ フォルダー内の WSDL ファイルが表示されます。 3. キャンバス上の空白領域を右クリックして、​**\[Run Project (プロジェクトを実行)\]**​ を選択します。 4. SOAP UI クライアントで ​`http://localhost:8081/TshirtService/TshirtServicePort?wsdl`​ に移動します。 SOAP サービスから WSDL ファイルのコンテンツが返されます。 WSDL ファイルを更新する場合は、WSDL ファイルを右クリックし、​**\[Mule\]**​ > ​**\[Generate Flows From WSDL (WSDL からフローを生成)\]**​ を選択してフローを再生成します。 ## [](#関連情報)関連情報 - [実装する操作の特定](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-soap-fault-task) # APIkit Release Notes These release notes are provided for APIkit: - [APIkit for AsyncAPI 1.2.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-asyncapi-1.2.0) - [APIkit for AsyncAPI 1.1.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-asyncapi-1.1.2) - [APIkit for AsyncAPI 1.1.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-asyncapi-1.1.1.rn) - [APIkit for AsyncAPI 1.1.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-asyncapi-1.1.0.rn) - [APIkit for AsyncAPI 1.0.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-asyncapi-1.0.0.rn) - [APIkit for GraphQL 1.2.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-graphql-1.2.0) - [APIkit for GraphQL 1.1.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-graphql-1.1.1) - [APIkit for GraphQL 1.1.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-graphql-1.1.0) - [APIkit for GraphQL 1.0.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-graphql-1.0.1) - [APIkit for GraphQL 1.0.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-graphql-1.0.0) - [APIkit for gRPC 1.0.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-grpc-1.0.0) - [APIkit for OData 4 1.6.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-4-1.6.2) - [APIkit for OData 4 1.6.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-4-1.6.1) - [APIkit for OData 4 1.6.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-4-1.6.0) - [APIkit for OData 4 1.5.5 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-4-1.5.5) - [APIkit for OData 4 1.5.4 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-4-1.5.4) - [APIkit for OData 4 1.5.3 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-4-1.5.3) - [APIkit for OData 4 1.5.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-4-1.5.2) - [APIkit for OData 4 1.5.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-4-1.5.1) - [APIkit for OData 4 1.5.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-4-1.5.0) - [APIkit for OData 4 1.4.3 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-4-1.4.3) - [APIkit for OData 4 1.4.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-4-1.4.2) - [APIkit for OData 4 1.4.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-4-1.4.1) - [APIkit for OData 4 1.4.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-4-1.4.0) - [APIkit for OData 4 1.3.4 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-4-1.3.4) - [APIkit for OData 4 1.3.3 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-4-1.3.3) - [APIkit for OData 4 1.3.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-4-1.3.2) - [APIkit for OData 4 1.3.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-4-1.3.1) - [APIkit for OData 4 1.3.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-4-1.3.0) - [APIkit for OData 4 1.2.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-4-1.2.0) - [APIkit for OData 4 1.1.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-4-1.1.0) - [APIkit for OData 4 1.0.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-4-1.0.2) - [APIkit for OData 4 1.0.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-4-1.0.1) - [APIkit for OData 4 1.0.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-4-1.0.0) - [APIkit for OData 2.4.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-2.4.0) - [APIkit for OData 2.3.5 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-2.3.5) - [APIkit for OData 2.3.4 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-2.3.4) - [APIkit for OData 2.3.3 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-2.3.3) - [APIkit for OData 2.3.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-2.3.2) - [APIkit for OData 2.3.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-2.3.1) - [APIkit for OData 2.3.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-2.3.0) - [APIkit for OData 2.2.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-2.2.1) - [APIkit for OData 2.2.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-2.2.0) - [APIkit for OData 2.1.5 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-2.1.5) - [APIkit for OData 2.1.4 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-2.1.4) - [APIkit for OData 2.1.3 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-2.1.3) - [APIkit for OData 2.1.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-2.1.2) - [APIkit for OData 2.1.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-2.1.1) - [APIkit for OData 2.1.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-2.1.0) - [APIkit for OData 2.0.9 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-2.0.9) - [APIkit for OData 2.0.8 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-2.0.8) - [APIkit for OData 2.0.7 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-2.0.7) - [APIkit for OData 2.0.6 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-2.0.6) - [APIkit for OData 2.0.5 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-2.0.5) - [APIkit for OData 2.0.4 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-2.0.4) - [APIkit for OData 2.0.3 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-2.0.3) - [APIkit for OData 2.0.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-2.0.2) - [APIkit for OData 2.0.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-2.0.1) - [APIkit for OData 1.0.9 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-1.0.9) - [APIkit for OData 1.0.7 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-1.0.7) - [APIkit for OData 1.0.6 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-odata-1.0.6) - [APIkit for SOAP 2.1.7 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-2.1.7) - [APIkit for SOAP 2.1.6 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-2.1.6) - [APIkit for SOAP 2.1.5 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-2.1.5) - [APIkit for SOAP 2.1.4 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-2.1.4) - [APIkit for SOAP 2.1.3 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-2.1.3) - [APIkit for SOAP 2.1.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-2.1.2) - [APIkit for SOAP 2.1.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-2.1.1) - [APIkit for SOAP 2.1.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-2.1.0) - [APIkit for SOAP 2.0.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-2.0.0) - [APIkit for SOAP 1.7.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.7.2) - [APIkit for SOAP 1.7.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.7.1) - [APIkit for SOAP 1.7.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.7.0) - [APIkit for SOAP 1.6.10 Release Notes (Deprecated)](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.6.10) - [APIkit for SOAP 1.6.9 Release Notes (Deprecated)](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.6.9) - [APIkit for SOAP 1.6.8 Release Notes (Deprecated)](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.6.8) - [APIkit for SOAP 1.6.7 Release Notes (Deprecated)](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.6.7) - [APIkit for SOAP 1.6.6 Release Notes (Deprecated)](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.6.6) - [APIkit for SOAP 1.6.5 Release Notes (Deprecated)](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.6.5) - [APIkit for SOAP 1.6.4 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.6.4) - [APIkit for SOAP 1.6.3 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.6.3) - [APIkit for SOAP 1.6.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.6.2) - [APIkit for SOAP 1.6.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.6.1) - [APIkit for SOAP 1.6.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.6.0) - [APIkit for SOAP 1.5.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.5.2) - [APIkit for SOAP 1.5.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.5.1) - [APIkit for SOAP 1.5.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.5.0) - [APIkit for SOAP 1.4.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.4.1) - [APIkit for SOAP 1.4.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.4.0) - [APIkit for SOAP 1.3.4 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.3.4) - [APIkit for SOAP 1.3.3 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.3.3) - [APIkit for SOAP 1.3.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.3.2) - [APIkit for SOAP 1.3.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.3.1) - [APIkit for SOAP 1.3.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.3.0) - [APIkit for SOAP 1.2.12 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.2.12) - [APIkit for SOAP 1.2.11 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.2.11) - [APIkit for SOAP 1.2.10 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.2.10) - [APIkit for SOAP 1.2.9 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.2.9) - [APIkit for SOAP 1.2.8 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.2.8) - [APIkit for SOAP 1.2.7 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.2.7) - [APIkit for SOAP 1.2.6 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.2.6) - [APIkit for SOAP 1.2.5 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.2.5) - [APIkit for SOAP 1.2.4 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.2.4) - [APIkit for SOAP 1.2.3 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.2.3) - [APIkit for SOAP 1.2.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.2.2) - [APIkit for SOAP 1.2.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.2.1) - [APIkit for SOAP 1.2.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.2.0) - [APIkit for SOAP 1.1.12 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.1.12) - [APIkit for SOAP 1.1.11 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.1.11) - [APIkit for SOAP 1.1.10 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.1.10) - [APIkit for SOAP 1.1.9 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.1.9) - [APIkit for SOAP 1.1.8 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.1.8) - [APIkit for SOAP 1.1.7 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.1.7) - [APIkit for SOAP 1.1.6 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.1.6) - [APIkit for SOAP 1.1.5 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.1.5) - [APIkit for SOAP 1.1.4 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.1.4) - [APIkit for SOAP 1.1.3 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.1.3) - [APIkit for SOAP 1.1.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.1.2) - [APIkit for SOAP 1.1.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.1.1) - [APIkit for SOAP 1.1.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.1.0) - [APIkit for SOAP 1.0.8 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.0.8) - [APIkit for SOAP 1.0.7 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.0.7) - [APIkit for SOAP 1.0.5 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.0.5) - [APIkit for SOAP 1.0.4 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.0.4) - [APIkit for SOAP 1.0.3 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.0.3) - [APIkit for SOAP 1.0.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.0.2) - [APIkit for SOAP 1.0.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-for-soap-1.0.1) - [APIkit Mule 4 1.13.3 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.13.3-release-notes) - [APIkit Mule 4 1.13.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.13.2-release-notes) - [APIkit Mule 4 1.13.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.13.1-release-notes) - [APIkit Mule 4 1.13.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.13.0-release-notes) - [APIkit Mule 4 1.12.10 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.12.10-release-notes) - [APIkit Mule 4 1.12.9 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.12.9-release-notes) - [APIkit Mule 4 1.12.8 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.12.8-release-notes) - [APIkit Mule 4 1.12.7 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.12.7-release-notes) - [APIkit Mule 4 1.12.6 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.12.6-release-notes) - [APIkit Mule 4 1.12.5 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.12.5-release-notes) - [APIkit Mule 4 1.12.4 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.12.4-release-notes) - [APIkit Mule 4 1.12.3 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.12.3-release-notes) - [APIkit Mule 4 1.12.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.12.2-release-notes) - [APIkit Mule 4 1.12.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.12.1-release-notes) - [APIkit Mule 4 1.12.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.12.0-release-notes) - [APIkit Mule 4 1.11.18 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.11.18-release-notes) - [APIkit Mule 4 1.11.17 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.11.17-release-notes) - [APIkit Mule 4 1.11.16 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.11.16-release-notes) - [APIkit Mule 4 1.11.15 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.11.15-release-notes) - [APIkit Mule 4 1.11.14 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.11.14-release-notes) - [APIkit Mule 4 1.11.13 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.11.13-release-notes) - [APIkit Mule 4 1.11.12 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.11.12-release-notes) - [APIkit Mule 4 1.11.11 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.11.11-release-notes) - [APIkit Mule 4 1.11.10 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.11.10-release-notes) - [APIkit Mule 4 1.11.9 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.11.9-release-notes) - [APIkit Mule 4 1.11.8 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.11.8-release-notes) - [APIkit Mule 4 1.11.7 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.11.7-release-notes) - [APIkit Mule 4 1.11.6 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.11.6-release-notes) - [APIkit Mule 4 1.11.5 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.11.5-release-notes) - [APIkit Mule 4 1.11.4 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.11.4-release-notes) - [APIkit Mule 4 1.11.3 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.11.3-release-notes) - [APIkit Mule 4 1.11.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.11.2-release-notes) - [APIkit Mule 4 1.11.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.11.1-release-notes) - [APIkit Mule 4 1.11.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.11.0-release-notes) - [APIkit Mule 4 1.10.4 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.10.4-release-notes) - [APIkit Mule 4 1.10.3 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.10.3-release-notes) - [APIkit Mule 4 1.10.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.10.2-release-notes) - [APIkit Mule 4 1.10.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.10.1-release-notes) - [APIkit Mule 4 1.10.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.10.0-release-notes) - [APIkit Mule 4 1.9.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.9.2-release-notes) - [APIkit Mule 4 1.9.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.9.1-release-notes) - [APIkit Mule 4 1.9.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.9.0-release-notes) - [APIkit Mule 4 1.8.4 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.8.4-release-notes) - [APIkit Mule 4 1.8.3 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.8.3-release-notes) - [APIkit Mule 4 1.8.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.8.2-release-notes) - [APIkit Mule 4 1.8.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.8.1-release-notes) - [APIkit Mule 4 1.8.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.8.0-release-notes) - [APIkit Mule 4 1.7.3 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.7.3-release-notes) - [APIkit Mule 4 1.7.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.7.2-release-notes) - [APIkit Mule 4 1.7.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.7.1-release-notes) - [APIkit Mule 4 1.7.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.7.0-release-notes) - [APIkit Mule 4 1.6.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.6.1-release-notes) - [APIkit Mule 4 1.6.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.6.0-release-notes) - [APIkit Mule 4 1.5.12 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.5.12-release-notes) - [APIkit Mule 4 1.5.11 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.5.11-release-notes) - [APIkit Mule 4 1.5.10 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.5.10-release-notes) - [APIkit Mule 4 1.5.9 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.5.9-release-notes) - [APIkit Mule 4 1.5.8 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.5.8-release-notes) - [APIkit Mule 4 1.5.7 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.5.7-release-notes) - [APIkit Mule 4 1.5.6 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.5.6-release-notes) - [APIkit Mule 4 1.5.5 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.5.5-release-notes) - [APIkit Mule 4 1.5.4 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.5.4-release-notes) - [APIkit Mule 4 1.5.3 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.5.3-release-notes) - [APIkit Mule 4 1.5.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.5.2-release-notes) - [APIkit Mule 4 1.5.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.5.1-release-notes) - [APIkit Mule 4 1.5.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.5.0-release-notes) - [APIkit Mule 4 1.4.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.4.2-release-notes) - [APIkit Mule 4 1.4.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.4.1-release-notes) - [APIkit Mule 4 1.4.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.4.0-release-notes) - [APIkit Mule 4 1.3.19 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.3.19-release-notes) - [APIkit Mule 4 1.3.18 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.3.18-release-notes) - [APIkit Mule 4 1.3.17 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.3.17-release-notes) - [APIkit Mule 4 1.3.16 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.3.16-release-notes) - [APIkit Mule 4 1.3.15 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.3.15-release-notes) - [APIkit Mule 4 1.3.14 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.3.14-release-notes) - [APIkit Mule 4 1.3.13 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.3.13-release-notes) - [APIkit Mule 4 1.3.12 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.3.12-release-notes) - [APIkit Mule 4 1.3.11 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.3.11-release-notes) - [APIkit Mule 4 1.3.10 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.3.10-release-notes) - [APIkit Mule 4 1.3.9 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.3.9-release-notes) - [APIkit Mule 4 1.3.8 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.3.8-release-notes) - [APIkit Mule 4 1.3.7 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.3.7-release-notes) - [APIkit Mule 4 1.3.6 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.3.6-release-notes) - [APIkit Mule 4 1.3.5 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.3.5-release-notes) - [APIkit Mule 4 1.3.4 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.3.4-release-notes) - [APIkit Mule 4 1.3.3 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.3.3-release-notes) - [APIkit Mule 4 1.3.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.3.2-release-notes) - [APIkit Mule 4 1.3.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.3.1-release-notes) - [APIkit Mule 4 1.3.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.3.0-release-notes) - [APIkit Mule 4 1.2.5 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.2.5-release-notes) - [APIkit Mule 4 1.2.4 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.2.4-release-notes) - [APIkit Mule 4 1.2.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.20-release-notes) - [APIkit Mule 4 1.1.16 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.16-release-notes) - [APIkit Mule 4 1.1.15 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.15-release-notes) - [APIkit Mule 4 1.1.14 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.14-release-notes) - [APIkit Mule 4 1.1.13 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.13-release-notes) - [APIkit Mule 4 1.1.12 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.12-release-notes) - [APIkit Mule 4 1.1.11 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.11-release-notes) - [APIkit Mule 4 1.1.10 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.10-release-notes) - [APIkit Mule 4 1.1.9 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.9-release-notes) - [APIkit Mule 4 1.1.8 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.8-release-notes) - [APIkit Mule 4 1.1.7 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.7-release-notes) - [APIkit Mule 4 1.1.6 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.6-release-notes) - [APIkit Mule 4 1.1.5 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.5-release-notes) - [APIkit Mule 4 1.1.4 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.4-release-notes) - [APIkit Mule 4 1.1.3 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.3-release-notes) - [APIkit Mule 4 1.1.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.2-release-notes) - [APIkit Mule 4 1.1.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1.1-release-notes) - [APIkit Mule 4 1.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.1-release-notes) - [APIkit 4.0.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.0.1-release-notes) - [APIkit 4.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/apikit/apikit-4.0-release-notes) ## [](#see-also)See Also - [Known Issues](https://help.salesforce.com/s/issues) # APIkit REST エラー処理リファレンス フローの一部で問題が発生すると、エラーの種類を含むメッセージが表示されます。 ## [](#apikit-for-rest-エラーの種類)APIkit for REST エラーの種類 APIkit for REST では、次のエラーの種類が定義されています。
エラーの種類 説明

APIKIT:BAD_REQUEST

Bad request (不正な要求)

APIKIT:NOT_FOUND

Resource not found (リソースが見つかりません)

APIKIT:METHOD_NOT_ALLOWED

Method not allowed (メソッドが許可されていません)

APIKIT:NOT_ACCEPTABLE

Not acceptable (使用できません)

APIKIT:UNSUPPORTED_MEDIA_TYPE

Unsupported media type (サポートされていないメディアタイプ)

APIKIT:NOT_IMPLEMENTED

Not Implemented (実装されていません)

## [](#apikit-for-rest-エラー処理)APIkit for REST エラー処理 APIkit スキャフォルダーは、最も広く使用されている HTTP 状況コードの応答に基づいてエラー処理コードを生成します。これらのコードは、次に説明されているエラーの種類とメッセージにマップされます。
状況コード エラーの種類 応答メッセージ

400

APIKIT:BAD_REQUEST

Bad request (不正な要求)

404

APIKIT:NOT_FOUND

Resource not found (リソースが見つかりません)

405

APIKIT:METHOD_NOT_ALLOWED

Method not allowed (メソッドが許可されていません)

406

APIKIT:NOT_ACCEPTABLE

Not acceptable (使用できません)

415

APIKIT:UNSUPPORTED_MEDIA_TYPE

Unsupported media type (サポートされていないメディアタイプ)

501

APIKIT:NOT_IMPLEMENTED

Not Implemented (実装されていません)

## [](#apikit-for-rest-のエラーの例)APIkit for REST のエラーの例 次のコードは、HTTP 400 応答のエラーハンドラーを示しています。これを使用して、独自のカスタム状況コードとメッセージを作成できます。 ```xml ... 400 ... ``` メインフローは、HTTP 状況コードと、明確で分かりやすい言語で表現された関連メッセージの組み合わせを含む HTTP エラー応答を送信します。この例では、​`message: "Bad request"`​ です。 ## [](#関連情報)関連情報 - [Error Handlers](https://docs.mulesoft.com/mule-runtime/latest/error-handling) # APIkit SOAP エラー処理リファレンス フローの一部で問題が発生すると、エラーの種類を含むメッセージが表示されます。 ## [](#apikit-for-soap-エラーの種類)APIkit for SOAP エラーの種類 APIkit for SOAP では、次の 2 つのエラーの種類が定義されています。
エラーの種類 説明

APIKIT-SOAP:ROUTER

Routing exception (ルーティングの例外)

APIKIT-SOAP:FAULT

Fault exception (エラーの例外)

## [](#apikit-for-soap-エラー処理)APIkit for SOAP エラー処理 APIkit for SOAP スキャフォルダーはエラー処理コードを生成しません。 ## [](#関連情報)関連情報 - [Error Handlers](https://docs.mulesoft.com/mule-runtime/latest/error-handling) # APIkit の互換性 次の表は、APIkit モジュールと対応する Mule バージョン間の互換性を示しています。
モジュール Mule 3 Mule 4

APIkit for AsyncAPI

いいえ

はい

APIkit for GraphQL

いいえ

はい

APIkit for OData v2

はい

はい

APIkit for OData v4

いいえ

はい

APIkit for REST

はい

はい

APIkit for SOAP

はい

はい

APIkit の一部のバージョンは、FIPS 140-2 標準に準拠しています。これらのコンプライアンス標準を満たす APIkit のバージョンについての詳細は、​[APIkit Release Notes](https://docs.mulesoft.com/jp/apikit/latest/apikit-release-notes). Additionally, learn about [Mule runtime FIPS 140-2 Compliance Support](https://docs.mulesoft.com/mule-runtime/latest/fips-140-2-compliance-support)​を参照してください。 ## [](#言語およびプロトコルサポート)言語およびプロトコルサポート
言語/プロトコル バージョン

AsyncAPI 仕様

2.6

OData

2.0、4.0

OpenAPI 仕様 (OAS)

2.0、3.0

RESTful API Modeling Language (RAML)

1.0、0.8

SOAP

1.1、1.2

## [](#次のステップ)次のステップ Mule アプリケーションの開発に使用する言語とプロトコルに応じて、ニーズに最も適した APIkit モジュールを選択します。 - [APIkit for AsyncAPI](https://docs.mulesoft.com/jp/apikit/latest/apikit-for-asyncapi) - [APIkit for GraphQL](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-for-graphql) - [APIkit for OData V2](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-for-odatav2) - [APIkit for OData V4](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-for-odatav4) - [APIkit for REST](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-for-rest) - [APIkit for SOAP](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-for-soap) - [Mule 3 の APIkit](#3.x@apikit::index.adoc) # APIkit の概要 APIkit は、Mule 開発者向けの API 主導アプリケーションの開発を簡素化するツールキットです。指定された仕様に基づいてアプリケーションをスキャフォールディングし、入力パラメーターを検証し、​[MUnit テストスイート](https://docs.mulesoft.com/munit/latest/munit-scaffold-test-task)​を作成します。APIkit には、サポートされる Web サービス種別ごとにモジュールがあります。 - [APIkit for GraphQL](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-for-graphql)は GraphQL API をサポートします。 - [APIkit for OData V2](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-for-odatav2) and [APIkit for OData V4](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-for-odatav4)​は OData API をサポートします。 - [APIkit for REST](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-for-rest)は RAML および OAS API をサポートします。 - [APIkit for SOAP](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-for-soap)は SOAP API をサポートします。 APIkit を使用すると、受信要求は定義された API コントラクトに基づいて適切なエンドポイントにインテリジェントに転送されます。このルーティングメカニズムにより、要求の処理が簡素化され、パフォーマンスが向上し、要求が適切な API リソースによって処理されるようになります。 各モジュールは Web サービスのファミリー向けに設計されていますが、すべてのモジュールは共通の使用パターンを共有します。そのため、SOAP API を使用する Mule 開発者は、GraphQL、RAML、OData、または OAS API を簡単に使用できます。 ## [](#機能)機能 - APIkit は、サポートされる API 仕様に基づいて Mule アプリケーションの構造を生成します。 - APIkit には、API 仕様の要件に従って複雑な入力検証を実行するソースと操作が含まれています。 - APIkit for REST モジュールには、API プロジェクトを開発しながら実験できる API Console が含まれています。 - 一部の APIkit モジュールには、サポートされる開発環境での編集エクスペリエンスを強化するための ​[Anypoint Studio](https://docs.mulesoft.com/studio/)​ および ​[Anypoint Code Builder](https://docs.mulesoft.com/jp/anypoint-code-builder/)​ の拡張機能が含まれています。 ## [](#apikit-の使用を始める前に)APIkit の使用を始める前に APIkit を使用してサポートされる API 仕様をスキャフォールディングするには、​[Anypoint Studio](https://docs.mulesoft.com/studio/)​ または ​[Anypoint Code Builder](https://docs.mulesoft.com/jp/anypoint-code-builder/)​ へのアクセス権が必要です。 ## [](#apikit-のバージョン)APIkit のバージョン APIkit は、Mule Runtime バージョン 4 のモジュールとして機能します。APIkit の Mule 3 実装に関するドキュメントは、 [ここ](https://docs.mulesoft.com/apikit/3.x/)​から入手できます。Mule 3 で APIkit を使用する場合、モジュールバージョンはランタイムバージョンと一致します。 デフォルトでは、Studio には APIkit for REST モジュールと APIkit for SOAP モジュールが含まれています。GraphQL または OData モジュールが必要な場合は、各セクションのインストール手順に従ってください。 ## [](#関連情報)関連情報 - [APIkit の互換性](https://docs.mulesoft.com/jp/apikit/latest/apikit-compatibility) - [APIkit for GraphQL](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-for-graphql) - [APIkit for OData V2](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-for-odatav2) - [APIkit for OData V4](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-for-odatav4) - [APIkit for REST](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-for-rest) - [APIkit for SOAP](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-for-soap) # GraphQL API 実装の照会 APIkit for GraphQL を使用してデータを照会する GraphQL サービスの実装例を示します。 これらの例を実行する前に、[APIkit for GraphQL アプリケーションサンプル](https://docs.mulesoft.com/jp/apikit/latest/_attachments/apikit-graphql-example.jar)をダウンロードして実行し、テスト用のサンプルデータセットをメモリに読み込んでください。HTTP POST 要求で送信されるクエリの形式は、 [こちら](https://graphql.org/learn/serving-over-http/)​を参照してください。 サンプルアプリケーションは、次の GraphQL API をベースにしています。 type Post { id: ID! user: User title: String body: String comments: \[Comment\] } type Comment { id: ID! user: User post: Post body: String replies: \[Comment\] } type User { id: ID! name: String username: String email: String phone: String website: String address: Address } type Address { id: ID! street: String city: String zipcode: String latitude: Float longitude: Float } input AddressInput { street: String city: String zipcode: String latitude: Float longitude: Float } input UserInput { name: String username: String email: String phone: String website: String address: AddressInput } type Query { # Looks for a user by ID getUser(id: ID!): User # Looks for a post by ID getPost(id: ID!): Post # Returns the list of all users allUsers: \[User\] # Returns the list of all posts allPosts: \[Post\] } type Mutation { # Creates a new user createUser(user: UserInput!): User! # Creates a new post createPost(userId: ID!, title: String!, body: String!): Post! # Adds a comment to a post postComment(userId: ID!, postId: ID!, body: String!): Comment! # Adds a reply to a comment replyToComment(commentId: ID!, userId: ID!, body: String!): Comment! } ## [](#要求クエリの例)要求クエリの例 次の例では、​**Query**​ 型はサービスが公開するクエリのリストを定義します。 ... type Query { # Looks for a user by ID getUser(id: ID!): User # Looks for a post by ID getPost(id: ID!): Post # Returns the list of all users allUsers: \[User\] # Returns the list of all posts allPosts: \[Post\] } ... ### [](#すべての投稿の取得)すべての投稿の取得 このユースケースでは、既存の各投稿のデータをシンプルに要求します。 #### [](#クエリの作成)クエリの作成 { allPosts { id title body } } #### [](#要求のトリガー)要求のトリガー curl --location --request POST 'http://localhost:8081/graphql' \\ --header 'Content-Type: application/json' \\ --data-raw '{"query":"{allPosts{id title body}}","variables":{}}' #### [](#応答の取得)応答の取得 { "data": { "allPosts": \[ { "id": "88", "title": "tellus nisi eu orci mauris lacinia sapien quis libero", "body": "Praesent id massa id nisl venenatis lacinia. Aenean sit amet justo. Morbi ut odio. Cras mi pede, malesuada in, imperdiet et, commodo vulputate, justo. In blandit ultrices enim. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin interdum mauris non ligula pellentesque ultrices. Phasellus id sapien in sapien iaculis congue. Vivamus metus arcu, adipiscing molestie, hendrerit at, vulputate vitae, nisl." }, { "id": "89", "title": "mauris lacinia sapien quis libero", "body": "Sed ante. Vivamus tortor. Duis mattis egestas metus. Aenean fermentum. Donec ut mauris eget massa tempor convallis. Nulla neque libero, convallis eget, eleifend luctus, ultricies eu, nibh. Quisque id justo sit amet sapien dignissim vestibulum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nulla dapibus dolor vel est. Donec odio justo, sollicitudin ut, suscipit a, feugiat et, eros." }, ... { "id": "87", "title": "nam tristique", "body": "Proin eu mi. Nulla ac enim. In tempor, turpis nec euismod scelerisque, quam turpis adipiscing lorem, vitae mattis nibh ligula nec sem. Duis aliquam convallis nunc. Proin at turpis a pede posuere nonummy. Integer non velit. Donec diam neque, vestibulum eget, vulputate ut, ultrices vel, augue. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec pharetra, magna vestibulum aliquet ultrices, erat tortor sollicitudin mi, sit amet lobortis sapien sapien non mi. Integer ac neque." } \] } } ### [](#データローダーによるすべてのユーザーの取得)データローダーによるすべてのユーザーの取得 このクエリは、すべてのユーザーのデータ (アドレス情報など) を要求します。この例では、データローダーを使用して 1 つの要求で各ユーザーのアドレスを取得しています。 #### [](#クエリの作成-2)クエリの作成 { allUsers { name email website address { street city zipcode } } } #### [](#要求のトリガー-2)要求のトリガー curl --location --request POST 'http://localhost:8081/graphql' \\ --header 'Content-Type: application/json' \\ --data-raw '{"query":"{allUsers{name email website address{street city zipcode}}}","variables":{}}' #### [](#応答の取得-2)応答の取得 { "data": { "allUsers": \[ { "name": "Rollin Sebley", "email": "rsebley2f@ucsd.edu", "website": "homestead.com", "address": { "street": "432 Myrtle Trail", "city": "Pau", "zipcode": "64029 CEDEX 9" } }, { "name": "Bonny Madgewick", "email": "bmadgewick2g@mozilla.com", "website": "utexas.edu", "address": { "street": "5 David Terrace", "city": "Oelaba", "zipcode": null } }, ... { "name": "Gretal Titmuss", "email": "gtitmuss2e@soup.io", "website": "creativecommons.org", "address": { "street": "3201 Gale Place", "city": "Bolo", "zipcode": "4201" } } \] } } ### [](#id-での投稿の取得)ID での投稿の取得 このクエリ例では、投稿コメントやユーザー名などの投稿データを ID で要求しています。 #### [](#クエリの作成-3)クエリの作成 { getPost(id: 10) { id user { username } title body comments { user { username } body replies { body } } } } #### [](#要求のトリガー-3)要求のトリガー curl --location --request POST 'http://localhost:8081/graphql' \\ --header 'Content-Type: application/json' \\ --data-raw '{"query":"{getPost(id:10){id user{username}title body comments{user{username}body replies{body}}}}","variables":{}}' #### [](#応答の取得-3)応答の取得 { "data": { "getPost": { "id": "10", "user": { "username": "bdearelli" }, "title": "id luctus nec molestie sed justo pellentesque viverra pede ac", "body": "Maecenas tristique, est et tempus semper, est quam pharetra magna, ac consequat metus sapien ut nunc. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris viverra diam vitae quam. Suspendisse potenti. Nullam porttitor lacus at turpis. Donec posuere metus vitae ipsum. Aliquam non mauris.", "comments": \[ { "user": { "username": "cwalesby1p" }, "body": "Praesent blandit. Nam nulla. Integer pede justo, lacinia eget, tincidunt eget, tempus vel, pede. Morbi porttitor lorem id ligula. Suspendisse ornare consequat lectus. In est risus, auctor sed, tristique in, tempus sit amet, sem.", "replies": \[\] }, { "user": { "username": "rricci2d" }, "body": "Maecenas leo odio, condimentum id, luctus nec, molestie sed, justo. Pellentesque viverra pede ac diam. Cras pellentesque volutpat dui.", "replies": \[\] } \] } } } ## [](#要求変異の例)要求変異の例 **Mutation**​ 型は、サービスが有効化する変異のリストを定義します。 ... type Mutation { # Creates a new user createUser(user: UserInput!): User! # Creates a new post createPost(userId: ID!, title: String!, body: String!): Post! # Adds a comment to a post postComment(userId: ID!, postId: ID!, body: String!): Comment! # Adds a reply to a comment replyToComment(commentId: ID!, userId: ID!, body: String!): Comment! } ... ### [](#新規投稿の作成)新規投稿の作成 この例では、新しい投稿を作成して、投稿に関するいくつかの情報を要求します。 #### [](#クエリの作成-4)クエリの作成 mutation CreatePost($userId: ID!, $title: String!, $body: String!) { createPost(userId: $userId,title: $title,body: $body) { id user { username } title body comments { body } } } #### [](#変数の作成)変数の作成 { "userId": 42, "title": "GraphQL by example", "body": "Let's talk about GraphQL" } #### [](#要求のトリガー-4)要求のトリガー curl --location --request POST 'http://localhost:8081/graphql' \\ --header 'Content-Type: application/json' \\ --data-raw '{"query":"mutation CreatePost($userId:ID!,$title:String!,$body:String!){createPost(userId:$userId,title:$title,body:$body){id user{username}title body comments{body}}}","variables":{"userId":42,"title":"GraphQL by example","body":"Let'\\''s talk about GraphQL"}}' #### [](#応答の取得-4)応答の取得 { "data": { "createPost": { "id": "101", "user": { "username": "tblackmore15" }, "title": "GraphQL by example", "body": "Let's talk about GraphQL", "comments": \[\] } } } ### [](#新規投稿へのコメントの追加)新規投稿へのコメントの追加 この例では、前の手順で作成した投稿への返信としてコメントを投稿します。また、作成したコメントの本文と、新しいコメントが含まれていることを確認するために元の投稿をコメントリスト付きで返すようにサービスに要求します。 #### [](#クエリの作成-5)クエリの作成 mutation PostComment($userId: ID!, $postId: ID!, $body: String!) { postComment(userId: $userId, postId: $postId, body: $body) { id body post { id title comments { id user { username } body } } } } #### [](#変数の作成-2)変数の作成 { "userId": 34, "postId": 101, "body": "Nice post! Thanks for sharing! It's just what I was looking for" } #### [](#要求のトリガー-5)要求のトリガー curl --location --request POST 'http://localhost:8081/graphql' \\ --header 'Content-Type: application/json' \\ --data-raw '{"query":"mutation PostComment($userId:ID!,$postId:ID!,$body:String!){postComment(userId:$userId,postId:$postId,body:$body){id body post{id title comments{id user{username}body}}}}","variables":{"userId":34,"postId":101,"body":"Nice post! Thanks for sharing! It'\\''s just what I was looking for"}}' #### [](#応答の取得-5)応答の取得 { "data": { "postComment": { "id": "201", "body": "Nice post! Thanks for sharing! It's just what I was looking for", "post": { "id": "101", "title": "GraphQL by example", "comments": \[ { "id": "201", "user": { "username": "ekosex" }, "body": "Nice post! Thanks for sharing! It's just what I was looking for" } \] } } } } ### [](#投稿の新規コメントへの返信)投稿の新規コメントへの返信 この要求例では、前の手順で投稿したコメントへの返信を応答として返します。クエリでは、新規返信に加えて投稿のすべての情報を返すようにサービスに要求します。 #### [](#クエリの作成-6)クエリの作成 mutation ReplyToComment($commentId: ID!, $userId: ID!, $body: String!) { replyToComment(commentId: $commentId, userId: $userId, body: $body) { id body post { id title comments { id body replies { id user { username } body } } } } } #### [](#変数の作成-3)変数の作成 { "commentId": 201, "userId": 42, "body": "Thank you!" } #### [](#要求のトリガー-6)要求のトリガー curl --location --request POST 'http://localhost:8081/graphql' \\ --header 'Content-Type: application/json' \\ --data-raw '{"query":"mutation ReplyToComment($commentId:ID!,$userId:ID!,$body:String!){replyToComment(commentId:$commentId,userId:$userId,body:$body){id body post{id title comments{id body replies{id user{username}body}}}}}","variables":{"commentId":201,"userId":42,"body":"Thank you!"}}' #### [](#応答の取得-6)応答の取得 { "data": { "replyToComment": { "id": "202", "body": "Thank you!", "post": { "id": "101", "title": "GraphQL by example", "comments": \[ { "id": "201", "body": "Nice post! Thanks for sharing! It's just what I was looking for", "replies": \[ { "id": "202", "user": { "username": "tblackmore15" }, "body": "Thank you!" } \] } \] } } } } # Mule プロジェクトの APIkit プロジェクトへの変換 ビジネスロジックを含む Mule プロジェクトとアプリケーションに対してバックエンドファーストの設計アプローチを選択した場合、それらを APIkit プロジェクトに変換し、REST サービスとして公開できます。次のいずれかのアプローチを使用します。 - [\[manual-approach\]](#manual-approach) - [\[scaffolding-approach\]](#scaffolding-approach) 最適なアプローチを決定するときは、アプリケーションのサイズと複雑さを考慮してください。 これらのアプローチの例は、データベースからユーザーを取得する次の Mule アプリケーションに基づいています。 ```xml ``` ## [](#始める前に)始める前に サービスの API 仕様を定義するには、​[「REST API の構築、実装、テスト」の「API 仕様の設計」](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-implement-rest-api#design-your-api-specification)​を参照してください。この例を説明するために、そのワークフローで使用される API 仕様と JSON サンプルを ​`/src/main/resources/api`​ フォルダーに作成またはコピーします。 ## [](#手動アプローチ)手動アプローチ 既存のフローで機能するルーターを手動で設定するには、次の手順に従います。 ### [](#ステップ-1-メインフローを作成する)ステップ 1: メインフローを作成する APIkit プロジェクト内で、エントリポイントとして機能するメインフローを作成します。 1. 次のコンポーネントを Mule パレットからキャンバスにドラッグします。 - フローソースとしての ​**\[HTTP Listener (HTTP リスナー)\]**​ ソース - フロープロセス内の ​**\[APIkit Router (APIkit ルーター)\]**​ 操作 2. **\[HTTP Listener (HTTP リスナー)\]**​ のプロパティエディターの ​**\[Connector Configuration (コネクタ設定)\]**​ で、既存の ​**\[HTTP\_Listener\_Config\]**​ を選択します。 3. **\[Path (パス)\]** に ​`/api/*`​ を入力して、APIkit ルーターのリスナーパスを指定します。 4. APIkit ルーターのプロパティエディターの ​**\[Router Configuration (ルーター設定)\]**​ で、​**\[Add (追加)\]**​ をクリックして新しい設定を作成します。 **\[Global Element Properties (グローバル要素のプロパティ)\]**​ ウィザードが表示されます。 5. **\[API Definition (API 定義)\]**​ で、​`api/api.raml`​ パスを選択します。 6. 設定を受け入れます。 7. `GET-Users-FLOW`​ から ​**\[HTTP Listener (HTTP リスナー)\]**​ を削除します。 8. `GET-User-By-Id-FLOW`​ から ​**\[HTTP Listener (HTTP リスナー)\]**​ を削除します。 ```xml ``` ### [](#ステップ-2-api-リソースとアクションをフローにマップする)ステップ 2: API リソースとアクションをフローにマップする デフォルトでは、各 APIkit フローはルーティング目的で、次のパターンを特徴とする命名規則に従います。 `action:\resource[:content-type][:config-name]`
名前 説明

action

HTTP メソッド

resource

HTTP リソース

content-type

ペイロードのコンテンツタイプ (省略可能)

config-name

APIkit ルーター設定名 (省略可能)

元のフロー名を保持し、各 API リソースとアクションをそれらにマップするには、次の手順に従ってこの動作を上書きします。 1. **\[APIkit Router (APIkit ルーター)\]**​ を選択して、​**プロパティエディター**​を開きます。 2. **\[Router configuration (ルーター設定)\]**​ で ​**\[Edit (編集)\]**​ をクリックします。 **\[Global Element Properties (グローバル要素のプロパティ)\]**​ ウィザードが表示されます。 3. **\[Mappings (マッピング)\]**​ で、​`[Add (追加)]`​ をクリックして新しいマッピング設定を作成します。 **\[New Mapping (新規マッピング)\]**​ ダイアログが表示されます。 4. ドロップダウンを使用して、リソースをアクションにマップします。 - **\[Resource (リソース)\]**​ で ​`[/users]`​ を選択します。 - **\[Action (アクション)\]**​ で ​**\[Get\]**​ を選択します。 - **\[Flow (フロー)\]**​ で ​`[GET-Users-FLOW]`​ を選択します。 - **\[OK\]**​ をクリックします。 5. **\[Mappings (マッピング)\]**​ で ​**\[Add (追加)\]**​ をクリックします。 **\[New Mapping (新規マッピング)\]**​ ダイアログが表示されます。 6. ドロップダウンを使用して、リソースをアクションにマップします。 - **\[Resource (リソース)\]**​ で ​`[/users/userbyid]`​ を選択します。 - **\[Action (アクション)\]**​ で ​`[Get]`​ を選択します。 - **\[Flow (フロー)\]**​ で、get users アクションを含むフロー ​`[GET-User-By-Id-FLOW]`​ を選択します。 - **\[OK\]**​ をクリックします。 ```xml ``` ## [](#スキャフォールディングアプローチ)スキャフォールディングアプローチ [\[before-you-begin\]](#before-you-begin)のプロセスに従います。完了したら、API 仕様をスキャフォールディングするための代替ワークフローを含めます。 このアプローチでは、APIkit ルーター設定、エラーハンドラー、およびコンソールフローを標準で使用できます。各リソースをマップするフローも得ることができます。 ### [](#ステップ-1-api-仕様をスキャフォールディングする)ステップ 1: API 仕様をスキャフォールディングする API をスキャフォールディングして、メイン、コンソール、およびリソースフローを自動生成します。 1. **Package Explorer**​ で、​`/src/main/resources/api/api.raml`​ を右クリックします。 2. **\[Mule\]**​ を選択します。 3. **\[Generate Flows from Local REST API (ローカル REST API からフローを生成)\]**​ をクリックします。 API と同じ名前の新しい XML ファイルが作成されます。このファイルにはスキャフォールディングフローが含まれます。 ### [](#ステップ-2-フローを参照する)ステップ 2: フローを参照する 次のいずれかの操作を実行します。 - [\[step-2-map-api-resources-and-actions-to-flows\]](#step-2-map-api-resources-and-actions-to-flows)で説明されているように、各リソースのスキャフォールディングフローを削除し、元のフローをマップする。 - スキャフォールディングフローからすべての操作を削除し、削除された操作を含むフロー参照を追加する。このオプションを選択すると、すべてのフローが操作を含むフローを参照するため、間接参照が追加されますが、シナリオによってはこのような間接参照は不便な可能性があります。 ```xml ... ``` - 既存のフローのコンテンツをルーティング命名規則に準拠したスキャフォールディングフローに転送する。アプリケーションが大きい場合、これらの変更を実行するのは手間がかかる可能性があります。 ```xml ... ``` ## [](#api-をテストする)API をテストする 新しいプロジェクトがセットアップされたので、API を​[テスト](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-implement-rest-api#test-your-api-implementation)​する準備が整いました。 ## [](#関連情報)関連情報 - [APIkit for REST Module リファレンス](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-xml-reference) - [APIkit REST エラー処理リファレンス](https://docs.mulesoft.com/jp/apikit/latest/apikit-error-handling-reference) # OData V2 API の構築、実装、テスト サンプル OData MySQL は、HTTP ベースのデータサービスを使用して MySQL データベースを照会する方法を示しています。 ## [](#始める前に)始める前に APIkit で OData REST API を作成および使用するには、次のソフトウェアをインストールする必要があります。 - OData プラグイン - Mule Runtime Engine 4.1.1 以降 - Anypoint Studio 7.1.4 以降 また、[OData のエンティティデータモデルのサンプル](https://docs.mulesoft.com/jp/apikit/latest/_attachments/odata.raml)をダウンロードする必要があります。 ## [](#apikit-odata-拡張を使用した-odata-v2-api-の実装)APIkit OData 拡張を使用した OData v2 API の実装 次の例では、OData 対応 REST API の実装方法を示します。 1. Studio で、​**\[File (ファイル)\]**​ > ​**\[New (新規)\]**​ > ​**\[Mule Project (Mule プロジェクト)\]**​ を選択します。 2. **\[Project Name (プロジェクト名)\]**​ 項目で、Mule プロジェクトの名前を入力します。 3. **\[Finish (完了)\]**​ をクリックします。 4. 前提条件セクションでダウンロードした ​`odata.raml`​ ファイルをプロジェクトの ​`/src/main/resources/api`​ ディレクトリにコピーします。 5. プロジェクトエクスプローラーで、​`odata.raml`​ を右クリックし、​**\[Mule\]**​ > ​**\[Generate OData API from RAML Types (RAML 型からの OData API の生成)\]**​ を選択します。 ![ウィンドウで \[Generate OData API from RAML Types (RAML 型からの OData API の生成)\] オプションへのフルパスが強調表示されています](_images/generate-odata.png) 6. OData 拡張は、OData API 実装に必要なファイルを生成します。 ![Mule フォルダーの api.xml ファイル、リソースフォルダーの api.raml および odatalibrary.raml ファイルの 3 つのファイルがツリーで強調表示されています。](/mulesoft/current/ja-jp/apikit/latest/_images/list-of-odata-files.png)
1API 実装用のフローを含む Mule 設定ファイル
2生成された RAML 定義
3生成された RAML ライブラリ
1. API 実装に必要なロジックをフローに追加します。 ## [](#サンプル-odata-mysql)サンプル OData MySQL サンプル OData MySQL は、Maven プロジェクトとしてパッケージ化された、完全に機能する OData API です。このサンプルでは、データソース、アプリケーション、およびサービスはローカルです。 まず、MySQL データベースをインストールし、提供されたスクリプトを使用してテーブルを読み込みます。次に、MySQL データベースドライバーを含む圧縮プロジェクトを Studio にインポートします。フローを調べて、データにアクセスすることで必要なエンドポイントを実装する方法を確認できます。次に、プロジェクトを実行して REST サービスと OData サービスをコールします。 ### [](#mysql-データベースのインストールおよび入力)MySQL データベースのインストールおよび入力 1. MySQL データベースをインストールして、MySQL を起動します。 2. MySQL プロジェクトサンプル ([apikit-odata-example-main.jar](https://docs.mulesoft.com/jp/apikit/latest/_attachments/apikit-odata-example-main.jar)) をダウンロードします。 3. MySQL コマンドを使用して ​`src/main/resources`​ にある ​`example.sql`​ スクリプトを実行し、データを ​`apikit-odata-example`​ という名前のデータベースに読み込みます。 ### [](#odata-api-の実装)OData API の実装 1. Studio で、​**\[File (ファイル)\]**​ > ​**\[Import (インポート)\]**​ を選択します。 2. **\[Anypoint Studio\]**​ > ​**\[Packaged mule application (.jar) (パッケージ化された Mule アプリケーション (.jar))\]**​ > ​**\[Next (次へ)\]**​ を選択します。 3. `apikit-odata-example-main.jar`​ ファイルを参照して、​**\[Finish (完了)\]**​ をクリックします。 4. Studio で ​`src/main/resources`​ フォルダー内の ​`mule-configuration.properties`​ ファイルを編集し、次のプロパティを設定してローカル MySQL データベースにアクセスします。 ```html ds.db.port=3306 ds.db.user= ds.db.host= ds.db.database=apikit-odata-example ds.db.password= ``` 5. プロジェクトを右クリックし、​**\[Run As (別のユーザーとして実行)\]**​ > ​**\[Mule Application (Mule アプリケーション)\]**​ を選択して、API をローカルで実行します。 これで、REST および OData サービスにアクセスできます。 ## [](#rest-および-odata-サービスへのアクセス)REST および OData サービスへのアクセス API をローカルで実行する手順は、次のとおりです。 1. プロジェクトを右クリックし、​**\[Run As (別のユーザーとして実行)\]**​ > ​**\[Mule Application (Mule アプリケーション)\]**​ を選択します。 2. 次の URL を使用して REST および OData サービスにアクセスします。 - REST API: `/api` - OData API: `/api/odata.svc` 次の例では、使用可能な多数の REST コールと OData クエリのうちのいくつかを示します。 ### [](#顧客リストを取得する)顧客リストを取得する 顧客リストを取得する REST API をコールします。 http://localhost:8081/api/customers 応答は次のようになります。 ```JSON { "entries": [ { "ContactName": "Maria Anders", "ContactTitle": "Sales Representative", "CompanyName": "Alfreds Futterkiste", "CustomerID": "" }, { "ContactName": "Maria Anders", "ContactTitle": "Sales Representative", "CompanyName": "Alfreds Futterkiste", "CustomerID": "ALFKI" }, ] } ``` ### [](#odata-サービスの記述にアクセスする)OData サービスの記述にアクセスする このサービスの背後にあるコレクションについての情報を取得します。 http://localhost:8081/api/odata.svc 応答は次のようになります。 ```xml Default customers orders ``` ### [](#odata-サービスメタデータを取得する)OData サービスメタデータを取得する サービスメタデータは、OData サービスリソースの構造、その操作、および特定のサービスの EDM を公開します。 HTTP サービスのメタデータを取得します。 http://localhost:8081/api/odata.svc/$metadata 応答は、HTTP サービス API のサンプルをビルドするために使用した ​`odata.raml`​ EDM と同じです。 ```xml ... ``` ### [](#データソースを照会する)データソースを照会する 顧客リストを XML および JSON 形式で取得する OData クエリを発行します。 http://localhost:8081/api/odata.svc/customers http://localhost:8081/api/odata.svc/customers?$format=json 顧客リスト内の 10 番目の顧客を取得する OData クエリを発行します。 http://localhost:8081/api/odata.svc/customers?$format=json&$top=1&$skip=10&$inlinecount=allpages 応答は次のようになります。 ```json { "d": { "results": [ { "__metadata": { "uri": "http:/localhost:8081/api/odata.svc/customers('BOTTM')", "type": "odata2.namespace.customers" }, "CompanyName": "Bottom-Dollar Markets", "ContactName": "Elizabeth Lincoln", "ContactTitle": "Accounting Manager", "CustomerID": "BOTTM" } ], "__count": "98" } } ``` ## [](#odata-api-のエンドポイントの実装)OData API のエンドポイントの実装 Anypoint Studio を使用して、​`get:/customers:config`​ や ​`get:/orders:config`​ フローなどの API エンドポイントを実装できます。フローの出力形式は JSON である必要があります。詳細は、​[完全な機能例](https://docs.mulesoft.com/jp/apikit/latest/creating-an-odatav4-api-with-apikit#odata-mysql-example)​を参照してください。 ### [](#get-用の入力変数の宣言)GET 用の入力変数の宣言 1. 文字列のリスト (List) にエンティティの項目を含む APIkit OData サービス変数用の変数を宣言します。次に例を示します。 ```javascript var entityFields = vars.odata.fields ``` 2. 「http.query.params」に絞り込む APIkit OData サービス変数用の変数を宣言します。次に例を示します。 ```javascript var filters = attributes.queryParams ``` 3. エンティティのキーを含む APIkit OData サービス変数用の変数を宣言します。次に例を示します。 ```javascript var keys = vars.odata.keyNames ``` 4. テーブル名を含む APIkit OData サービス変数用の変数を宣言します。次に例を示します。 ```javascript var remoteEntityName = vars.odata.remoteEntityName ``` ### [](#post-用の入力変数の宣言)POST 用の入力変数の宣言 1. エンティティの名前を含む APIkit OData サービスインバウンドプロパティ用の変数を宣言します。 ```javascript var remoteEntityName = vars.odata.remoteEntityName ``` 2. ペイロードを { myKey1: 'myValue1', myKey2: 'myValue2'} などに変換するための変数を宣言します。 ```javascript var valuesFromPayload = { keys: payload pluck $$, values: payload pluck "'$'" } ``` 3. 2 つの変数を宣言し、「joinBy」を使用してキーと値をカンマ区切り値 (CSV) に変換します。次に例を示します。 ```javascript var columns = ( (valuesFromPayload.keys map "`$`" ) joinBy ", ") // myKey1, myKey2 var values = (valuesFromPayload.values joinBy ", ") // 'myValue1', 'myValue2' ``` ### [](#出力の形式設定)出力の形式設定 各フローの出力は、次の形式にする必要があります。 ```xml { "entries": [ {}, {}, {} ] } ``` ## [](#関連情報)関連情報 - [APIkit for OData v2 Module リファレンス](https://docs.mulesoft.com/jp/apikit/latest/apikit-odatav2-extension-reference) - [Deploy to CloudHub](https://docs.mulesoft.com/cloudhub/deploying-to-cloudhub) # OData V2 ツールのインストール Anypoint Studio で APIkit for OData v2 プラグインをインストールする手順は、次のとおりです。 1. **\[Help (ヘルプ)\]**​ > ​**\[Install New Software (新規ソフトウェアをインストール)\]**​ > ​**\[Add (追加)\]**​ を選択します。 ![新しいソフトウェアをインストールするためのウィンドウで \*\[Add (追加)\] \*ボタンが強調表示されています](_images/add-update-site.png) 2. **\[Name (名前)\]**​ で ​`APIkit for ODATA v2 Update Site`​ と入力します。 3. **\[Location (場所)\]**​ に、サイトの URL ​`https://studio.mulesoft.org/s4/apikit-for-odata/`​ を入力します。 4. **\[Add (追加)\]**​ を選択します。 ![リポジトリを追加するためのウィンドウで \*\[Add (追加)\]\* ボタンおよび名前と場所項目が強調表示されています](_images/add-repository-odata.png) 5. **\[Anypoint ODATA Plugin (Anypoint OData プラグイン)\]**​ を選択して、​**\[Next (次へ)\]**​ をクリックします。 ![\[Anypoint ODATA Plugin (Anypoint OData プラグイン)\] 項目と \[Next (次へ)\] ボタンが強調表示されているウィンドウ](_images/select-odata-extension.png) 6. 商品の契約条件に同意し、​**\[Finish (完了)\]**​ を選択します。 7. Studio を再起動してインストールを完了します。 ## [](#関連情報)関連情報 - [OData V2 API の構築、実装、テスト](https://docs.mulesoft.com/jp/apikit/latest/creating-an-odatav2-api-with-apikit) # OData V4 API の構築、実装、テスト HTTP ベースのデータサービスを使用して、​[OData MySQL サンプル](#apikit-for-odata-4-implementation-example)​で MySQL データベースを照会できます。 ## [](#始める前に)始める前に APIkit で OData REST API を作成および使用するには、次のソフトウェアをインストールする必要があります。 - OData プラグイン - Mule Runtime Engine 4.3.0 以降 - Anypoint Studio 7.9.0 以降 さらに、[OData 4 実装サンプル](https://docs.mulesoft.com/jp/apikit/latest/_attachments/apikit-odata4-example.jar)をダウンロードする必要があります。 ## [](#apikit-for-odata-を使用した-odata-v4-api-のスキャフォールディング)APIkit for OData を使用した OData V4 API のスキャフォールディング 1. Studio で、​**\[File (ファイル)\]**​ > ​**\[New (新規)\]**​ > ​**\[Mule Project (Mule プロジェクト)\]**​ を選択します。 2. **\[Project Name (プロジェクト名)\]**​ 項目で、Mule プロジェクトの名前を入力します。 3. **\[Finish (完了)\]**​ をクリックします。 4. `src/main/resources/api`​ で、​`.csdl.xml`​ 拡張子の付いた新しいファイルを作成します。 例: `odata-metadata.csdl.xml`​。 ```xml (1) (2) (3) (4) ```
1 EntityType​ は、種別とそのプロパティを定義します。
2 key​ は、どのプロパティまたはプロパティのセットがエンティティのキーであるかを定義します。

たとえば、エンティティセット ​Orders​ は、2 つのキー ​OrderID​ と ​ShipName​ で構成されます。

3 EntityContainer​ は、公開エンティティのセットを定義します。

この例では、​Orders​ と ​Customers​ です。

4 EntitySet​ には名前と EntityType が含まれます。

それらを ​schema​ 名前空間で定義する必要があります。

5. **Package Explorer**​ で、​`odata-metadata.csdl.xml`​ ファイルを右クリックし、​**\[Generate Mule OData 4 API (Mule OData 4 API を生成)\]**​ を選択します。 ![\[Generate Mule OData 4 API (Mule OData 4 API を生成)\] オプションへのパスが強調表示されています](_images/generate-odata-v4-api.png) 6. APIkit は、​`.csdl.xml`​ メタデータファイルに基づいて対応するフローを生成します。 ![\`csdl.xml\` メタデータファイルから作成された 3 つのフローが強調表示されています。](/mulesoft/current/ja-jp/apikit/latest/_images/generated-odata-4-flow.png)
1メッセージを受信し、操作を正しいハンドラーに転送するメインフロー。
2各エンティティの ​GET​、​PUT​、​POST​、​DELETE​ 操作を含む 5 つのフロー。
3エンティティのコレクションを取得する ​GET​ 操作を含むフロー。
## [](#odata-システムクエリオプションの処理)OData システムクエリオプションの処理 各 ​**On Entity Request**​ および ​**On Entity Collection Request**​ リスナー内で、各 OData クエリオプション (​`$select`​、​`$orderby`​、​`$count`​ など) にマップする ​`systemQueryOptions`​ 属性にアクセスできます。たとえば、​`$select`​ 値にアクセスするには、次の式を使用します。 ```none #[attributes.odataRequestAttributes.systemQueryOptions.select] ``` ![\[Output (出力)\] タブで、属性の下の Mule メッセージ内の \[odataRequestAttributes\] が強調表示されています](_images/odata-query-option-attributes.png) ## [](#apikit-for-odata-4-実装例)APIkit for OData 4 実装例 1. 完全な [apikit-odata4-example](https://docs.mulesoft.com/jp/apikit/latest/_attachments/apikit-odata4-example.jar) をダウンロードします。 2. ダウンロードしたサンプルを Studio にインポートします。 3. src/main/resources/example.sql ファイル内の SQL ステートメントを実行して、MySQL データベースにデータベース、テーブル、およびテストデータを作成します。 4. Studio でアプリケーションを実行します。 Studio がアプリケーションをデプロイしたら、次のクエリの例を使用して OData サービスを照会できます。 ### [](#get-要求の例)GET 要求の例 要求 ```curl curl --location --request GET 'localhost:8081/api/Customers('BLAUS')' ``` 応答 ```JSON { "@odata.context": "http://localhost:8081/api/$metadata#Customers/$entity", "CompanyName": "Blauer See Delikatessen", "ContactName": "Hanna Moos", "ContactTitle": "Sales Representative", "CustomerID": "BLAUS" } ``` #### [](#複合キーを含む-get-要求の例)複合キーを含む GET 要求の例 要求 ```curl curl --location --request GET 'localhost:8081/api/Orders(OrderID=10315,ShipName='Island Trading') ``` 応答 ```JSON { "@odata.context": "http://localhost:8081/api/$metadata#Orders/$entity", "Freight": 41.76, "OrderDate": "1996-09-26T00:00:00Z", "OrderID": "10315", "Price": null, "Priority": 1, "ShipAddress": "Garden house Crowther Way", "ShipName": "Island Trading" } ``` ### [](#作成の例)作成の例 この例では、クライアントは新しいエンティティを作成するための 1 つまたは複数のキーを提供します。 顧客の要求の POST ```curl curl --location --request POST 'http://localhost:8081/api/Customers' \ --header 'Content-Type: application/json' \ --data-raw '{ "CompanyName": "Mulesoft", "ContactName": "Customer 123", "CustomerID": "NW123" }' ``` 注文の POST ```curl curl --location --request POST 'http://localhost:8081/api/Orders' \ --header 'Content-Type: application/json' \ --data-raw '{ "Freight": 32.38, "OrderID": 100000, "ShipAddress": "Unknown St. 123", "ShipName": "Order 100000" }' ``` ### [](#更新の例)更新の例 OData V4 は提供された項目のみを変更するため、PATCH を使用してエンティティを更新することをお勧めします。 PATCH ```curl curl --location --request PATCH 'http://localhost:8081/api/Customers('\''BOTTM'\'')' \ --header 'Content-Type: application/json' \ --data-raw '{ "ContactName": "James Bottom" }' ``` ```curl curl --location --request PATCH 'http://localhost:8081/api/Orders(OrderID=10251,ShipName='\''Victuailles en stock'\'')' \ --header 'Content-Type: application/json' \ --data-raw '{ "ShipAddress": "Unknown Av. 1234" }' ``` OData V4 はエンティティ全体を新しいエンティティに置き換えるため、PUT を使用してエンティティを更新することをお勧めしません。これは、データが失われる可能性があるためです。 PUT ```curl curl --location --request PUT 'http://localhost:8081/api/Customers('\''LONEP'\'')' \ --header 'Content-Type: application/json' \ --data-raw '{ "CompanyName": "New Lonesome Pine Restaurant", "ContactName": "Fran C. Wilson", "CustomerID": "LONEP" }' ``` ```curl curl --location --request PUT 'http://localhost:8081/api/Orders(OrderID=11056,ShipName='\''Eastern Connection'\'')' \ --header 'Content-Type: application/json' \ --data-raw '{ "Freight": 27.52, "OrderDate": "1998-05-28T00:00:00", "OrderID": 11056, "Priority": 2, "ShipAddress": "45 King George", "ShipName": "Eastern Connection" }' ``` ### [](#削除の例)削除の例 エンティティを削除する例を次に示します。 DELETE ```curl curl --location --request DELETE 'http://localhost:8081/api/Customers('\''NW123'\'')' ``` ```curl curl --location --request DELETE 'http://localhost:8081/api/Orders(OrderID=11056,ShipName='\''Eastern Connection'\'')' ``` ### [](#apikit-for-odata-4-のクライアント側ページネーション)APIkit for OData 4 のクライアント側ページネーション HTTP クエリパラメーター ​`$skip`​ と ​`$top`​ を使用してページを要求するようにクライアントを設定できます。 - `$top`​ システムクエリパラメーターでは、コレクションから返される項目の数を制限する負以外の整数 ​_n_​ を指定します。 - `$skip`​ システムクエリパラメーターでは、照会されたコレクションの最初の ​_n_​ 項目を結果から除外する負以外の整数 ​_n_​ を指定します。 次に例を示します。 ```curl curl -X GET ‘localhost:8081/api/Customers?$skip=1&$top=5’ ``` 2 番目の位置から始まる 5 件のレコードを返します。 ### [](#apikit-for-odata-4-のサーバー側ページネーション)APIkit for OData 4 のサーバー側ページネーション サーバー側ページネーションにより、クライアント側ページネーションから取得されたデータ要求のサブセットを、固定値の ​`pageSize`​ パラメーターを使用して制御できます。応答データセットを個別のページに分割することで、データの読みやすさを改善します。サーバーは、ページサイズを定義します。このページサイズは、サーバーが要求で返す最大レコード数です。 #### [](#odata-4-でのサーバー側ページネーション)OData 4 でのサーバー側ページネーション OData は、​`@odata.nextLink`​ を定義することで、応答には要求されたエンティティコレクションのサブセットのみが含まれていることを示します。そのため、​`@odata.nextLink`​ には、クライアントが要求したコレクションの次のサブセットを取得できるようにする URL が含まれます。この URL には、次のページが開始されるサーバーを示す ​`$skiptoken`​ パラメーターが含まれます。 #### [](#apikit-for-odata-4-のサーバー側ページネーションの実装)APIkit for OData 4 のサーバー側ページネーションの実装 Anypoint Studio の ​**\[Responses (応答)\]**​ タブで ​``​ を使用して一連の項目を定義することで、サーバー側ページネーションを実装できます。 ![\[Entity Collection Request (エンティティコレクション要求)\] タブで pageSize が ${service.orders.pageSize} に設定されています](_images/pagesize.png) `pageSize`​ に値を入力すると、APIkit は項目の XML 表現を作成します。 ```xml ``` #### [](#サーバー側ページネーションのページサイズまたはトークン項目)サーバー側ページネーションのページサイズまたはトークン項目 `ページサイズ`​は、​`request-entity-collection`​ リスナーが各要求で取得できる最大レコード数を表します。 数値によるページネーションを使用できない場合は、開発者が対応するフローでページネーションを生成できるように、​`[Token (トークン)] 項目`​でトークンを設定します。 APIkit for OData では、このトークン値が ​`@odata.nextLink`​ URL の ​`$skiptoken=`​ クエリパラメーターに含まれています。 ## [](#関連情報)関連情報 - [APIkit for OData v4 Module リファレンス](https://docs.mulesoft.com/jp/apikit/latest/apikit-odatav4-extension-reference) - [エラー処理リファレンス](https://docs.mulesoft.com/jp/apikit/latest/apikit-odatav4-error-handling-reference) - [Deploy to CloudHub](https://docs.mulesoft.com/cloudhub/deploying-to-cloudhub) # OData V4 ツールのインストール Anypoint Studio で APIkit for OData v4 プラグインをインストールする手順は、次のとおりです。 1. **\[Help (ヘルプ)\]**​ > ​**\[Install New Software (新規ソフトウェアをインストール)\]**​ を選択し、​**\[Add (追加)\]**​ をクリックします。 ![新しいソフトウェアをインストールするためのウィンドウで \*\[Add (追加)\] \*ボタンが強調表示されています](_images/add-update-site.png) 2. **\[Name (名前)\]**​ で ​`APIkit for ODATA v4 Update Site`​ と入力します。 3. **\[Location (場所)\]**​ に、サイトの URL ​`https://studio.mulesoft.org/s4/apikit-for-odata4/`​ を入力します。 4. **\[Add (追加)\]**​ をクリックします。 ![リポジトリを追加するためのウィンドウで \*\[Add (追加)\]\* ボタンおよび名前と場所項目が強調表示されています](_images/add-repository-odatav4.png) 5. **\[Anypoint ODATA Plugin (Anypoint OData プラグイン)\]**​ を選択して、​**\[Next (次へ)\]**​ をクリックします。 ![\[Anypoint ODATA Plugin (Anypoint OData プラグイン)\] 項目と \[Next (次へ)\] ボタンが強調表示されているウィンドウ](_images/select-odatav4-extension.png) 6. 商品の契約条件に同意し、​**\[Finish (完了)\]**​ をクリックします。 7. Studio を再起動してインストールを完了します。 ## [](#関連情報)関連情報 - [OData V4 API の構築、実装、テスト](https://docs.mulesoft.com/jp/apikit/latest/creating-an-odatav4-api-with-apikit) # OData 要求から SQL クエリへの変換 `Transform to SQL Select`​ 操作を使用して、入力 OData ​`GET`​ 要求を SQL SELECT クエリに変換できます。この操作は、データベース用 Anypoint Connector (Database Connector) の ​`select`​ 操作と組み合わせると役立ちます。 ![\*\[Transform to SQL select\]\* 要素と \*\[Entity set name (エンティティセット名)\]\* タブが強調表示されています](_images/transform-to-sql-transformer.png) 出力ペイロードはプリペアードステートメントであり、属性はプリペアードステートメントパラメーターのマップです。 ![\*\[Select database (データベースを選択)\]\* および \*\[Input Parameters (入力パラメーター)\]\* 項目が強調表示されています](_images/add-db-transform-to-sql.png) この操作を Database Connector で使用して、OData V4 を使用するデータベースを公開できます。 ![\*\[Serialized entity\]\* 要素と \*\[Inbound content (インバウンドコンテンツ)\]\* 項目が強調表示されています](_images/serialize-transform-to-sql.png) APIkit は、次の要素をサポートしています。 - システムクエリオプション: - $filter - $select - $search - $orderby - $skip - $top - 単一エンティティ - エンティティリレーション - サーバー側のページネーション APIkit は、次の要素をサポートしていません。 - パラメーターの別名 - 組み込み検索条件操作: - has - divby - 次を除いた組み込みクエリ関数: - contains - startswith - endwith - $apply - $compute - $expand ## [](#odata-v4-での-transform-to-sql-select-操作)OData V4 での Transform to SQL Select 操作 OData プロトコルでは、URL を使用して識別されたリソースに対してクライアントがクエリを実行できるようにするための一連の変換を定義しています。 クエリ可能なエンティティ、それぞれの項目、それぞれのリレーションのリストは、HTTP メッセージを使用したデータモデルで定義されています。 OData には、Java Database Connectivity (JDBC) との類似点がいくつかあります。​`transform-to-sql-select`​ 操作では、このような類似点を利用して、リソースに対する SQL クエリの作成を支援します。 この操作で生成されるメッセージには、SQL ​`select`​ 文をペイロードとし、パラメーター名と値マップを属性として準備されたステートメントが含まれます。 ## [](#apikit-for-odata-v4-を使用して-transform-to-sql-select-操作を実装する)APIkit for OData V4 を使用して Transform to SQL Select 操作を実装する SQL への変換操作は、次のパラメーターを持つ ​``​ XML 要素を使用して実装できます。
パラメーター名 説明

Display name (表示名)

操作の名前。

Module configuration (モジュール設定)

関連モジュール設定の名前。

Entity set name (エンティティセット)

#[attributes.entitySetName] を取得するエンティティセットの名前。

Page size (ページサイズ)

サーバー側ページネーション中に 1 ページに表示する結果の分量を定義する数値。

Entity type name (エンティティ種別名)

エンティティデータモデルによって指定された [attributes.odataRequestAttributes] を使用して OData 要求から取得される文字列。

Entity type fields (エンティティ種別項目)

#[attributes.odataRequestAttributes] を使用して OData 要求から取得される、エンティティ種からプロパティ項目のリストを定義する文字列の配列。

Entity type keys (エンティティ種別キー)

#[attributes.odataRequestAttributes] を使用して OData 要求から取得される、エンティティのキー名と値のマップを定義するオブジェクト。

System query options (システムクエリオプション)

#[attributes.odataRequestAttributes] を使用して OData 要求から取得されるパラメーター。

Search transformation enabled (検索変換を有効化)

​true​ の場合、このオプションは WHERE 句の $search 変換オプションを有効にします。

Strict search term match (厳密な検索語の一致)

​true​ の場合、このオプションは $search で完全一致を有効にします。有効になっている場合、WHERE 句内の用語は「%」で囲まれません。

SQL identifiers delimiter (SQL 識別子の区切り文字)

生成された SQL ステートメント内の識別子を区切るオプション (オプション: DOUBLE_QUOTES​、BRACKETS、および ​BACK_TICKS​)。

例:

  • DOUBLE_QUOTES​: SELECT "TrackId", "Name" FROM "Tracks"

  • BRACKETS: SELECT [TrackId], [Name] FROM [Tracks]

  • BACK_TICKS​: SELECT `TrackId`, \​Name​ FROM \​Tracks​

SQL limit rows (SQL 制限行数)

行数を制限するオプション (オプション: LIMIT および ​FETCH_NEXT_ROWS_ONLY​)。

例:

  • LIMIT: SELECT OrderID, ShippedDate, ShipCountry FROM Orders LIMIT :parameter1

  • FETCH_NEXT_ROWS_ONLY​: SELECT OrderID, ShippedDate, ShipCountry FROM Orders ORDER BY OrderID ASC OFFSET :parameter2 ROWS FETCH NEXT :parameter1 ROWS ONLY

ORDER BY​ は、要求に存在しない場合、CSDL で定義されたエンティティキーを使用して自動的に含まれます。

Date Transform Type (日付変換型)

次のいずれかの値が指定されます。

  • String: Date​ または ​DateTimeOffset​ パラメーターは ​string​ (デフォルト値) として渡されます。

  • java.time - LocalDate および LocalDateTime: Date​ または ​DateTimeOffset​ パラメーターは、​java.time​ パッケージクラス ​LocalDate​ および ​LocalDateTime​ のオブジェクトとして渡されます。このオプションにより、MySQL などのほとんどの DB ドライバーが ​Date/DateTime​ パラメーターを識別して処理し、正しい結果を返すことができます。

  • java.time - LocalDate および OffsetDateTime: Date​ または ​DateTimeOffset​ パラメーターは、​java.time​ パッケージクラス ​LocalDate​ および ​OffsetDateTime​ のオブジェクトとして渡されます。このオプションにより、Oracle などのほとんどの DB ドライバーが ​Date​、​Timestamp​、​Timestamp with Time Zone​ パラメーターを識別して処理し、正しい結果を返すことができます。

この操作では、デフォルトで文字列として ​` Date/DateTime`​ の値が取得されます。​java.time object​ オプションの 1 つを選択して、​java.time​ パッケージ内の対応する ​Date​ または ​DateTime​ オブジェクトとして出力します。

## [](#odata-v4-の-filter-式)OData V4 の $filter 式 OData の ​`$filter`​ 式では、比較、論理、算術、グルーピングの演算子を使用します。演算子のリストとその意味については、 [OData4 仕様](http://docs.oasis-open.org/odata/odata/v4.01/cs01/part1-protocol/odata-v4.01-cs01-part1-protocol.html#sec_BuiltinFilterOperations)​を参照してください。 APIkit では、​`has`​ 演算子と ​`divby`​ 演算子はサポートされません。 ## [](#transform-to-sql-select-でサポートされる式)Transform to SQL select でサポートされる式 OData でサポートされる絞り込み式については、 [仕様](http://docs.oasis-open.org/odata/odata/v4.01/cs01/part1-protocol/odata-v4.01-cs01-part1-protocol.html#sec_BuiltinFilterOperations)​を参照してください。 `transform-to-sql-select`​ 操作は、次の単項演算子とバイナリ演算子、そしてメソッド演算子をサポートします。
OData の演算子 SQL の演算子

add

+

and

AND

div

/

eq

=

ge

>=

gt

>

le

=<

lt

<

mod

%

mul

*

ne

<>

または

または

sub

-

not

NOT

-

-

contains

LIKE %value%

startswith

LIKE value%

endswith

LIKE %value

## [](#search-のサポート)$search のサポート この操作は、システムクエリオプションで指定された ​`$search`​ 式に基づいて ​`WHERE`​ 句を構築します。実装では、条件と一致するプロパティ値を持つすべての要素を選択します。 デフォルトでは、項目値に用語が含まれている場合に用語が一致します。設定で ​`[strict search term match (厳密な検索語の一致)]`​ が ​`true`​ に設定されている場合、​`search`​ 操作では項目値と検索用語が完全に一致する必要があります。 `[search transformation enabled (検索変換を有効化)]`​ および ​`[strict search term match (厳密な検索語の一致)]`​ パラメーターによって ​`$search`​ 機能が定義されます。 ## [](#関連情報)関連情報 - [APIkit for OData v4 Module リファレンス](https://docs.mulesoft.com/jp/apikit/latest/apikit-odatav4-extension-reference) - [エラー処理リファレンス](https://docs.mulesoft.com/jp/apikit/latest/apikit-odatav4-error-handling-reference) # REST API の構築、実装、テスト このワークフローは、REST API の設計、実装、テストのプロセスを示しています。 例として、このワークフローではモックユーザー情報を JSON 形式で提供する無料のオンライン REST サービス [{JSON} Placeholder](https://jsonplaceholder.typicode.com)​ を使用します。 ## [](#始める前に)始める前に 次のソフトウェアがインストールされていることを確認します。 - Anypoint Studio 7.1.4 以降 - Mule Runtime Engine 4.1.1 以降 ## [](#api-仕様を設計する)API 仕様を設計する Design Center の API Designer、Anypoint Studio の API 仕様プロジェクトツール、または任意のテキストエディターを使用して、API 仕様を設計します。 1. サービスが返す内容の例として使用するユーザーのリストを含む JSON ファイルを作成します。 \[ { "id": 1, "name": "Leanne Graham", "username": "Bret", "email": "Sincere@april.biz", "address": { "street": "Kulas Light", "suite": "Apt. 556", "city": "Gwenborough", "zipcode": "92998-3874", "geo": { "lat": "-37.3159", "lng": "81.1496" } }, "phone": "1-770-736-8031 x56442", "website": "hildegard.org", "company": { "name": "Romaguera-Crona", "catchPhrase": "Multi-layered client-server neural-net", "bs": "harness real-time e-markets" } } \] 2. `user-example.json`​ として保存します。 3. 次の API 仕様を使用して新しい空のファイルを作成します。 ```yaml #%RAML 1.0 title: placeholder version: 1.0 /users: get: description: Retrieve a list of all the users responses: 200: body: application/json: example: !include user-example.json /userbyid: get: description: Get information about a particular user queryParameters: id: description: Specify the id of the user you want to retrieve type: integer required: false example: 3 responses: 200: body: application/json: example: | [ { "id": 3, "name": "Clementine Bauch", "username": "Samantha", "email": "Nathan@yesenia.net", "address": { "street": "Douglas Extension", "suite": "Suite 847", "city": "McKenziehaven", "zipcode": "59590-4157", "geo": { "lat": "-68.6102", "lng": "-47.0653" }, }, "phone": "1-463-123-4447", "website": "ramiro.info", "company": { "name": "Romaguera-Jacobson", "catchPhrase": "Face to face bifurcated interface", "bs": "e-enable strategic applications", } } ] ``` 4. `api.raml`​ として保存します。 5. Studio で、​**\[File (ファイル)\]**​ > ​**\[New (新規)\]**​ > ​**\[Mule Project (Mule プロジェクト)\]**​ を選択します。 6. **\[Project Name (プロジェクト名)\]**​ で、Mule プロジェクトの名前を入力します。 - Exchange から API 仕様をインポートする場合、​**\[Import a published API (パブリッシュ済みの API をインポート)\]**​ を選択し、プラスアイコンをクリックして ​**\[From Exchange (Exchange から)\]**​ を選択します。 ![\*\[Import a published API (パブリッシュ済みの API をインポート)\]\* で、プラスをクリックして \[From Exchange (Exchange から)\] オプションを選択した状態が強調表示されています](_images/import-from-exchange.png) - ファイルシステムのローカルファイルから API 仕様をインポートする場合、​**\[Import RAML from Local File (ローカルファイルから RAML をインポート)\]**​ を選択します。 ![\[API implementation (API 実装)\] セクションで \*\[Import RAML from Local File (ローカルファイルから RAML をインポート)\]\*が強調表示されています](_images/import-from-local-file.png) - Design Center から API 仕様をインポートする場合、​**\[Download RAML from Design Center (Design Center から RAML をダウンロード)\]**​ を選択します。 ![\[API implementation (API 実装)\] セクションで \*\[Import from Design Center (Design Center からインポート)\]\* が強調表示されています](_images/import-from-design-center.png) 7. まだ選択されていない場合は、​**\[Scaffold Flows From These API Specifications (これらの API 仕様からフローをスキャフォールディングする)\]**​ を選択します。 8. **\[Finish (完了)\]**​ をクリックします。 APIkit は、インポートした API 仕様に基づいて必要なフローを生成します。 9. **\[Run (実行)\]**​ > ​**\[Run As (別のユーザーとして実行)\]**​ > ​**\[Mule Application (Mule アプリケーション)\]**​ をクリックして APIkit プロジェクトを実行します。 ## [](#api-コールをシミュレーションする)API コールをシミュレーションする 1. Anypoint Studio で、​**\[APIkit Consoles (APIkit コンソール)\]**​ ビューを見つけ、ベースポイント URL ​`http://localhost:8081/console/`​ の下にある ​**\[Open console (コンソールを開く)\]**​ をクリックします。 ![ウィンドウの \[APIkit Consoles (APIkit コンソール)\] タブに基点 URL の場所が表示されています。](_images/apikit-consoles.png) 2. デフォルトのブラウザーが開きます。​**API Console**​ に、API の概要と、タイトル、バージョン、サポートされるプロトコルなどのプロジェクトに関する情報が表示されます。 ![API Console バージョン情報](/mulesoft/current/ja-jp/apikit/latest/_images/apikit-console1.png) 3. **\[API Summary (API の概要)\]**​ で、​`/users`​ リソースの ​`[GET]`​ を選択します。 リソースの詳細ページが開き、HTTP 200 応答の予想される JSON 例などが表示されます。 ![APIkit 応答](/mulesoft/current/ja-jp/apikit/latest/_images/apikit-console3.png) 4. **\[API Summary (API の概要)\]**​ で、​`/userbyid`​ を展開します。 5. `/usersbyid`​ リソースの ​`[GET]`​ を選択します。 6. `[Try it (試す)]`​ をクリックして、要求を送信するためのビューを展開します。 **API Console**​ に、要求を試すためのパラメーターとヘッダーを追加するセクションが表示されます。 7. 選択されていない場合は、​**\[Show optional parameters (省略可能なパラメーターを表示)\]**​ を選択します。 8. **id**​ パラメーターのクエリパラメーター値として​`「3」`​と入力し、​`[Send (送信)]`​ をクリックします。 HTTP 200 応答は、​`/usersbyid`​ リソースに対する要求が成功したことを確認します。これには、ID 3 のユーザーのユーザー情報が含まれます。この応答には、JSON の例を含む本文も含まれます。 ![id 3 のユーザーの情報が強調表示されています](/mulesoft/current/ja-jp/apikit/latest/_images/apikit-console4.png) ## [](#api-実装にビジネスロジックを追加する)API 実装にビジネスロジックを追加する API からの例の代わりに、JSON Placeholder サービスの実際のデータを返すようにフローを変更します。 1. **\[Mule Palette (Mule パレット)\]**​ から新しい ​**\[Flow\]**​ コンポーネントをドラッグします。 2. 新しいフローの名前を​`「user_request_flow」`​に変更します。 3. **\[HTTP Request\]**​ コンポーネントをフロープロセスにドラッグします。 4. **\[General (一般)\]**​ の ​**\[Request (要求)\]**​ のプロパティエディターで、次の HTTP 要求オプションを設定します。 - **\[Method (メソッド)\]**​ で、デフォルトの ​`[GET]`​ をそのままにします。 - **\[Path (パス)\]**​ で、​`「/users」`​に設定します。 - **\[Query Parameters (クエリパラメーター)\]**​ で、​**\[Switch to expression mode (式モードに切り替え)\]**​ を選択し、次の DataWeave スクリプトを貼り付けます。 output application/java --- if (not isEmpty(attributes.queryParams)) { id : attributes.queryParams.id } else {} 5. `get:\users:api-config`​ フローと ​`get:\users\userbyid:api-config`​ フローの ​**\[Transform Message\]**​ コンポーネントを削除します。 6. 削除された ​**\[Transform Message\]**​ コンポーネントの代わりに、フローごとに 1 つの ​**\[Flow Reference\]**​ をドラッグします。 7. **\[Flow Reference\]**​ コンポーネントのプロパティエディターで、フロー名を​`「user_request_flow」`​として設定します。 8. 変更を保存します。 ## [](#api-実装をテストする)API 実装をテストする 1. Package Explorer で、プロジェクト名を右クリックし、​**\[Run As (別のユーザーとして実行)\]**​ > ​**\[Mule Application (Mule アプリケーション)\]**​ を選択します。 2. ブラウザーを開き、​`http://localhost:8081/api/users`​ に移動します。 JSON Placeholder サービスのユーザー情報が返されます。 \[ { "id": 1, "name": "Leanne Graham", "username": "Bret", "email": "Sincere@april.biz", "address": { "street": "Kulas Light", "suite": "Apt. 556", "city": "Gwenborough", "zipcode": "92998-3874", "geo": { "lat": "-37.3159", "lng": "81.1496" ... { "id": 10, "name": "Clementina DuBuque", "username": "Moriah.Stanton", "email": "Rey.Padberg@karina.biz", "address": { "street": "Kattie Turnpike", "suite": "Suite 198", "city": "Lebsackbury", "zipcode": "31428-2261", "geo": { "lat": "-38.2386", "lng": "57.2232" } ... \] 3. `http://localhost:8081/api/users/userbyid?id=4`​ に移動して、ID = 4 のユーザーに関する情報を取得します。 \[ { "id": 4, "name": "Patricia Lebsack", "username": "Karianne", "email": "Julianne.OConner@kory.org", "address": { "street": "Hoeger Mall", "suite": "Apt. 692", "city": "South Elvis", "zipcode": "53919-4257", "geo": { "lat": "29.4572", "lng": "-164.2990" } }, "phone": "493-170-9623 x156", "website": "kale.biz", "company": { "name": "Robel-Corkery", "catchPhrase": "Multi-tiered zero tolerance productivity", "bs": "transition cutting-edge web services" } } \] REST API の作成、実装、テストが完了しました。 ## [](#関連情報)関連情報 - [{JSON} Placeholder](http://jsonplaceholder.typicode.com) - [チュートリアル: API ビルドの最初から最後まで](https://docs.mulesoft.com/jp/general/api-led-overview) - [Design Center を使用した API 仕様または API フラグメントの作成とパブリッシュ](https://docs.mulesoft.com/design-center/design-create-publish-api-specs) # SOAP インターフェースの実装 Anypoint Studio と APIkit for SOAP を使用して API を作成し、リモート SOAP サービスをコンシュームします。この [WSDL tshirt2.wsdl example](https://docs.mulesoft.com/jp/apikit/latest/_attachments/tshirt2.wsdl) をダウンロードして SOAP インターフェースを作成します。このインターフェースは、データリソースにアクセスし、そのインターフェースを API として機能するバックエンドプロセスと統合します。 [APIkit for SOAP プロジェクトの作成](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-soap-project-task)​から始めます。 ## [](#関連情報)関連情報 - [APIkit for REST Module リファレンス](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-xml-reference) # SOAP エラーの防止 生成された ​[SOAP エラー](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-soap-fault-task)​を解決したら、Transform Message コンポーネントをフローに追加し、要求に応答して操作を実装するために DataWeave でメッセージを指定します。DataWeave コードでは、要求への応答の先頭のエラーコードを回避するために適切な ​`namespace`​ を使用します。 WSDL で定義されたエンドポイントに達すると、Transform Message コンポーネントはプロセス側で機能します。このアクションは Mule アプリケーションのメインフローの実行をトリガーして、バックエンドフローをコールします。 1. Studio で、​**OrderTshirt:\\soapkit-config**​ フローの Transform Message コンポーネントをクリックします。 \[Transform Message\] プロパティウィンドウに、生成された DataWeave コードが表示されます。 2. DataWeave コードを次のように変更します。 ```raml %dw 2.0 output application/java ns ns0 http://mulesoft.org/tshirt-service --- { body: { ns0#OrderTshirtResponse: { orderId: "I got a request from " ++ (payload.body.ns0#OrderTshirt.name default "") } } write "application/xml" } ``` 3. プロジェクトを保存して再実行します。 4. SoapUI で、SOAP エラーを生成する要求を再送信します。 出力は有効な応答に変更されます。 ```xml I got a request from John ``` ## [](#関連情報)関連情報 - [型付けされたエラーの表示](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-display-fault-task) # SOAP ヘッダーの取得 SoapUI では、要求ウィンドウに SOAP エンベロープヘッダーが表示されます。要求から SOAP ヘッダーを取得する手順は、次のとおりです。 ![要求ウィンドウに SOAP エンベロープヘッダーが表示されています](/mulesoft/current/ja-jp/apikit/latest/_images/apikit-for-soap-53dc2.png) 1. SoapUI で、API キーの値を入力して ​`OrderTshirt`​ 要求を変更します。 たとえば、​``​ タグの間に ​`987654321`​ を入力します。 2. Studio で、​`OrderTshirt:\soapkit-config`​ フローの ​**Transform Message**​ を選択します。 3. DataWeave コードを編集して API キー (ヘッダープロパティ) を取得します。 ```raml %dw 2.0 output application/java ns ns0 http://mulesoft.org/tshirt-service --- { body : { ns0#OrderTshirtResponse: { orderId: "I got a request from " ++ payload.body.ns0#OrderTshirt.name ++ " using the following auth header " ++ (payload.headers["AuthenticationHeader"].ns0#AuthenticationHeader.apiKey default "") } } write "application/xml" } ``` 4. 保存してプロジェクトをもう一度実行します。 5. SoapUI で、​`OrderTshirt`​ エンドポイントに要求を送信します。 + 次の応答が表示されます。 ```xml I got a request from John, using the following auth header 987654321 ``` ## [](#関連情報)関連情報 - [SOAP ヘッダーの設定](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-set-header-task) # SOAP ヘッダーの設定 APIkit を使用して、WSDL 宣言に基づいて、アプリケーションの応答にヘッダーを追加します。 この例を実行するには、​`tshirt2.wsdl`​ API 定義をダウンロードして、それに基づいて Mule アプリケーションを作成する必要があります。 詳細は、​[「APIkit for SOAP を使用する場合の前提条件」](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-soap-prerequisites-task)​と​[「APIkit for SOAP プロジェクトの作成」](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-soap-project-task)​を参照してください。 次の例では、アプリケーションの応答に ​`APIUsageInformation`​ ヘッダーを追加しています。 1. Anypoint Studio で、​`src/main/resources/api`​ の ​`tshirt2.wsdl`​ を開き、コントラクトで必要な ​`APIUsageInformation`​ 要素までスクロールします。 2. キャンバスで、​`OrderTshirt:/soapkit-config`​ フローの ​`Transform Message`​ コンポーネントを選択します。 次の DataWeave コードを使用できます。 ```linenums { body : { ns0#OrderTshirtResponse: { orderId: "I got a request from " ++ payload.body.ns0#OrderTshirt.name ++ " using the following auth header " ++ (payload.headers["AuthenticationHeader"].ns0#AuthenticationHeader.apiKey default "") } } write "application/xml" } ``` 3. `APIUsageInformation`​ ヘッダー宣言を追加します。 ```linenums { body : { ns0#OrderTshirtResponse: { orderId: "I got a request from " ++ payload.body.ns0#OrderTshirt.name ++ " using the following auth header " ++ (payload.headers["AuthenticationHeader"].ns0#AuthenticationHeader.apiKey default "") } } write "application/xml", headers: { (1) header: { ns0#APIUsageInformation: { } } write "application/xml" } } ```
1この DataWeave コードは、​Transform Message​ コンポーネントで生成される出力にヘッダーを追加します。
4. `apiCallsRemaining`​ ヘッダーを ​`APIUsageInformation`​ 要素に追加します。 { body : { ns0#OrderTshirtResponse: { orderId: "I got a request from " ++ payload.body.ns0#OrderTshirt.name ++ " using the following auth header " ++ (payload.headers\["AuthenticationHeader"\].ns0#AuthenticationHeader.apiKey default "") } } write "application/xml", headers: { header: { ns0#APIUsageInformation: { apiCallsRemaining: 10 **(1)** } } write "application/xml" } }
1apiCallsRemaining​ を ​10​ に設定します。
5. 保存してプロジェクトをもう一度実行します。 6. SoapUI で、​`OrderTshirt`​ 要求をもう一度実行します。 APIkit for SOAP の応答エンベロープは次のようになります。 ```xml 10 I got a request from John, using the following auth header 987654321 ``` ## [](#関連情報)関連情報 - [APIkit for SOAP Module リファレンス](https://docs.mulesoft.com/jp/apikit/latest/apikit-for-soap-module-reference) ## [](#raml-odata-v2-api-から-csdl-odata-v4-api-への変換)RAML OData v2 API から CSDL OData v4 API への変換 以前の APIkit OData 拡張を使用していた場合、​`odata.raml`​ ファイルを ​`odata.csdl.xml`​ ファイルに自動的に変換することで、OData v2 API の型定義を再利用して OData v4 API をスキャフォールディングできるようになりました。 Studio で ​`odata.raml`​ ファイルを右クリックして ​**\[Mule\]**​ > ​**\[Generate CSDL file (CSDL ファイルを生成)\]**​ を選択します。 ![Package Explorer で OData ファイルを右クリックすると、Mule セクションの \*\[Generate CSDL file (CSDL ファイルを生成)\]\* オプションが強調表示されます](_images/generate-csdl-file.png) APIkit によって、​**api**​ フォルダーに ​`odata.csdl.xml`​ ファイルが生成されます。 ![\*Package Explorer\* で \*api\* フォルダー内の新しい \*odata.csdl.xml\* ファイルが強調表示され、変換後の \*odata.csdl.xml\* ファイルの XML コードが強調表示されます](/mulesoft/current/ja-jp/apikit/latest/_images/csdl-xml.png) # エラー処理リファレンス ## [](#エラーの種類)エラーの種類 APIkit for OData v4 では、次のエラーの種類が定義されています。
エラーの種類 説明

APIKIT-ODATA:NOT_IMPLEMENTED

Requested service, feature, or operation not implemented (要求されたサービス、機能、または操作は実装されていません)

APIKIT-ODATA:MALFORMED_URI

Invalid request URI (要求 URI が無効です)

APIKIT-ODATA:MALFORMED_SEARCH

Invalid request ​$search​ expression in URI (URI の要求 $search 式が無効です)

APIKIT-ODATA:SERIALIZATION

Generic error for serialization issues (シリアル化の問題に関する汎用エラー)

APIKIT-ODATA:DESERIALIZATION

Generic error for deserialization issues (逆シリアル化の問題に関する汎用エラー)

APIKIT-ODATA:TRANSFORMATION

Generic error for issues related to URI to SQL transformations (URI から SQL への変換に関連する問題の汎用エラー)

APIKIT-ODATA:INTERNAL_SERVER_ERROR

Generic error for internal server issues (内部サーバーの問題に関する汎用エラー)

APIKIT-ODATA:NOT_FOUND

Generic error for not found (見つからなかった汎用エラー)

APIKIT-ODATA:EXPANSION

Generic error for issues during expansion (拡張時の問題に関する汎用エラー)

## [](#エラー処理)エラー処理 APIkit for OData v4 スキャフォルダーは、汎用エラーフォーマッターとして機能する 1 つの ​`On Error Propagate`​ キャッチを含むエラーハンドラーを生成します。 ```xml ... ... ``` ## [](#関連情報)関連情報 - [Error Handlers](https://docs.mulesoft.com/mule-runtime/latest/error-handling) # クエリパラメーターとヘッダーの検証 **APIkit ルーター**​は、ヘッダーとクエリパラメーターを検証し、API 仕様内で指定された属性に制限します。 1. Studio で、​**\[APIkit Router (APIkit ルーター)\]**​ を選択します。 ![\[APIkit Router (APIkit ルーター)\] が強調表示されています](_images/apikit-router-selection.png) 2. ルーター設定の ​**\[Edit (編集)\]**​ をクリックします。 ![\[APIkit Router (APIkit ルーター)\] タブで、\[Edit (編集)\] ボタンが強調表示されています](_images/router-config.png) 3. **\[Query Parameters Strict Validations (クエリパラメーターの厳格な検証)\]**​ を選択して、API 仕様で定義されているクエリパラメーターのみを使用可能にします。 4. **\[Headers Strict Validations (ヘッダーの厳格な検証)\]**​ を選択して、API 仕様で定義されているヘッダーのみを使用可能にします。 ![\[Router Configuration (ルーター設定)\] タブで、\*\[Query Parameters Strict Validations (クエリパラメーターの厳格な検証)\]\* と \*\[Headers Strict Validations (ヘッダーの厳格な検証)\]\* が強調表示されています](_images/enable-verifications.png) 次のように APIkit 設定コードを更新することで、ヘッダーとクエリパラメーターを検証するように ​**\[APIkit Router (APIkit ルーター)\]**​ を設定することもできます。 ```xml ``` ## [](#クエリパラメーターとヘッダーの検証の無効化)クエリパラメーターとヘッダーの検証の無効化 レイテンシーを最小限に抑えるには、クエリパラメーターとヘッダーの検証を無効にします。 1. Studio で、​**\[APIkit Router (APIkit ルーター)\]**​ を選択します。 ![\[APIkit Router (APIkit ルーター)\] が強調表示されています](_images/apikit-router-selection.png) 2. ルーター設定の ​**\[Edit (編集)\]**​ をクリックします。 ![\[APIkit Router (APIkit ルーター)\] タブで、\[Edit (編集)\] ボタンが強調表示されています](_images/router-config.png) 3. **\[Disable Validation (検証の無効化)\]**​ を選択します。 ![\[Router Configuration (ルーター設定)\] タブで、\*\[Disable Validation (検証の無効化)\]\* オプションが強調表示されています](_images/disable-verifications-apikit.png) 次のように APIkit 設定コードを更新することで、クエリパラメーターとヘッダーの検証を無効にしてレイテンシーを最小限に抑えることもできます。 ```xml ``` ## [](#関連情報)関連情報 - [レスポンスヘッダーと状況コードの設定](https://docs.mulesoft.com/jp/apikit/latest/configure-headers4-task) - [サービス URI の設定](https://docs.mulesoft.com/jp/apikit/latest/configure-service-uri-task) # サービス URI の設定 RAML または OAS API 実装の前にロードバランサーを使用する場合、プロキシで指定された URL が API の URL と一致することを確認するには、​**\[Keep RAML/OAS base URI (RAML/OAS ベース URI を保持)\]**​ フラグを有効にします。 コードを編集するには、​`keepApiBaseUri`​ を ​`true`​ に設定します。 ```xml ``` # スキャフォールディングリファレンス REST スキャフォルダー用 APIkit を使用して、RESTful API Modeling Language (RAML) または OpenAPI 仕様 (OAS) に基づいて REST API 実装のバックボーンを生成します。 ## [](#api-スキャフォールディング)API スキャフォールディング Studio では、API をスキャフォールディングするいくつかの方法が提供されています。 - Exchange または Maven からパブリッシュされた API をインポートする場合、ローカルファイルからインポートする場合、または Design Center からダウンロードする場合、​**\[New Mule Project (新規 Mule プロジェクト)\]**​ ウィザードで ​**\[Scaffold Flows From These API Specifications (これらの API 仕様からフローをスキャフォールディングする)\]**​ を選択する。 - **Package Explorer**​ で API ファイルを右クリックし、​**\[Mule\]**​ > ​**\[Generate flows from Local REST API (ローカル REST API からフローを生成)\]**​ を選択する。 - **Package Explorer**​ で API 連動関係を右クリックし、そのコンテキストメニューから ​**\[Generate flows (フローを生成)\]**​ を選択する。
ローカルファイルからのスキャフォールディングは、OAS ではサポートされていません。スキャフォールディング OAS API は、Exchange でパブリッシュされたアセットでのみ使用できます。
## [](#実装リファレンス)実装リファレンス REST API 仕様をスキャフォールディングする場合、APIkit では次の内容が生成されます。 - エントリポイントとして機能するメインフローには次の内容が含まれます。 - ソースとしての HTTP リスナー - メイン操作としての APIkit ルーター APIkit ルーター は、受信した API 要求から対応する Mule フローにメッセージを送り、デフォルト値を使用してシリアル化された応答を生成するメッセージプロセッサーです。たとえば、無効な要求では、APIkit は​`「bad request (不正な要求)」`​応答を生成し、要求された API リソース内に関連付けられたフローがない場合は​`「not implemented (実装されていません)」`​応答になります。 APIkit ルーターは要求のペイロード、ヘッダー、クエリパラメーター、URI パラメーターなどの要素を検証しますが、API 仕様で指定されているすべての要素を検証するわけではありません。具体的には、ルーターは認証の適用などのセキュリティ関連の検証を実行しません。代わりに、API ゲートウェイポリシーでこの検証が行われます。この検証は、要求がルーターに到達する前に行われます。 - Error Handler - API Console を公開する 2 つ目のフローには次のコンポーネントが含まれます。 - ソースとしての HTTP リスナー - メイン操作としての APIkit コンソール - Error Handler - N 個のフロー (API action-resource-content-type の組み合わせごとに 1 つ) に加えて、各フローには次の内容が含まれます。 - No source (ソースなし) (このオプションは REST および SOAP アプリケーションの APIkit でのみ使用可能です) - 後で実際のビジネスロジックに置き換えるモック実装 ## [](#例)例 ```xml #[vars.outboundHeaders default {}] #[payload] #[vars.outboundHeaders default {}] 400 404 405 406 415 501 #[vars.outboundHeaders default {}] #[payload] #[vars.outboundHeaders default {}] 404 ``` ## [](#関連情報)関連情報 - [エラー処理リファレンス](https://docs.mulesoft.com/jp/apikit/latest/apikit-error-handling-reference) # データソースへの GraphQL API のマッピング ## [](#ソースの選択)ソースの選択 モジュールソースは、GraphQL API の実装によって異なります。APIkit for GraphQL には 2 種類のソースがあります。 - データフェッチャー - データローダー どちらを選択するかは実装のニーズによって決まります。 GraphQL はトランスポートレイヤーに依存しないため、データの処理に使用するプロトコルに応じてメインコネクタリスナーを選択できます。 ### [](#リスナーの追加)リスナーの追加 メインアプリケーションフローをトリガーするインバウンドエンドポイントは、使用するクライアントサーバープロトコルに固有のコネクタリスナーです。GraphQL は HTTP で通信を行うことが多いため、APIkit スキャフォルダーはデフォルトで HTTP リスナーを生成しますが、別のソースを選択して別のプロトコルでデータを転送することもできます。 ### [](#データフェッチャーの追加)データフェッチャーの追加 データフェッチャーは、Mule フローのソースです。クエリ結果の単一オブジェクト項目のデータを供給します。データフェッチャーは、次のキーパートの組み合わせによって識別されます。 - **オブジェクト種別名**​: スキーマのいずれかのオブジェクト種別 - **項目名**​: そのオブジェクト種別に含まれるいずれかの項目の名前 項目の型が何であっても、スキーマで定義されているすべてのオブジェクト項目に対してデータフェッチャーを追加できます。Mule アプリケーションで項目に対してデータフェッチャーが設定されていない場合は、親型から項目値が供給されます。そうでない場合は、クライアントが要求したデータは提供されず、​`null`​ となります。 ### [](#データローダーの追加)データローダーの追加 データフェッチャーと同じ用に、データローダーも Mule フローのソースです。データローダーは、オブジェクト種別に関連したバッチ要求を処理します。データフェッチャーとは異なり、一意のキー識別子によって識別されます。 - **オブジェクト種別名**​: スキーマのいずれかのオブジェクト種別 データローダーは、GraphQL API の実装時に N+1 件の要求の最適化の問題を解決します。この問題は、最初のクエリの実行時に取得できたはずのデータをフェッチするために N 件の追加クエリステートメントが実行された場合に発生します。 モジュールは、実行時にデータフェッチャーを先に探します。データフェッチャーが指定されていない場合は、データローダーを探します。同じオブジェクト種別に対してデータフェッチャーとデータローダーの両方が指定されている場合、モジュールは先にデータフェッチャーを使用して項目を解決します。このプロセスでは、データフェッチャーが N+1 回続けて呼び出されるため、API のパフォーマンスに影響します。 ## [](#操作の選択)操作の選択 モジュールには、GraphQL API 実装の正常な設計と実行に不可欠な操作が用意されています。 - Route (ルート) - Serialize (シリアル化) - Serialize Batch (バッチシリアル化) ### [](#クエリのルーティング)クエリのルーティング **Route (ルート)**​ 操作は、GraphQL サービスのエントリポイントです。この操作は、クエリを解析、検証してから、グラフをトラバースし、クエリ結果を得るために必要なデータフェッチャーとデータローダーをコールすることでクエリを実行します。 ### [](#データフェッチャーのシリアル化)データフェッチャーのシリアル化 **Serialize (シリアル化)**​ 操作は、データフェッチャーソースが指定されているソースの最後に実行されます。この操作は、データフェッチャーの識別と同じキーペア (オブジェクト種別名と項目名) によって識別されます。 ### [](#データローダーのバッチシリアル化)データローダーのバッチシリアル化 **Serialize Batch (バッチシリアル化)**​ 操作は、データローダーソースが指定されているソースの最後に実行されます。この操作は、データローダーの識別と同じキー (オブジェクト種別名) によって識別されます。 **Serialize (シリアル化)**​ 操作と ​**Serialize Batch (バッチシリアル化)**​ 操作は、設計時に DataSense を活用します。 # レスポンスヘッダーと状況コードの設定 **\[HTTP Listener (HTTP リスナー)\]**​ 設定では、HTTP レスポンスボディ、ヘッダー、状況コード、理由を示す語句をカスタマイズできます。 ## [](#変数名を設定する)変数名を設定する **\[APIkit Router (APIkit ルーター)\]**​ で次のプロパティを設定することで、HTTP リスナーが検索するデフォルトの変数を設定できます。 - `outboundHeadersMapName` 応答に追加されたヘッダーマップを含む変数の名前 (デフォルトでは ​`outboundHeaders`​) - `httpStatusVarName` 応答に設定する状況コードを保存する変数の名前 (デフォルトでは ​`httpStatus`​) **\[APIkit Router (APIkit ルーター)\]**​ では両方の変数を作成し、カスタム HTTP ヘッダーと状況コードを簡単に応答に含めることができます。 ```xml ``` これらの変数のデフォルト名を変更するには、デフォルトの HTTP リスナー設定を更新して変数名と設定を調整します。 ```xml #[vars.outboundHeaders default {}] #[payload] #[vars.outboundHeaders default {}] ``` ## [](#応答にヘッダーを追加する)応答にヘッダーを追加する 次の例に示すように、追加するヘッダーを ​`outboundHeaders`​ マップ内に挿入します。 ```xml ``` ## [](#応答の状況コードを設定する)応答の状況コードを設定する `httpStatus`​ 変数に特定の値を割り当てるには、次の例を参考にしてください。 ```xml ``` ## [](#関連情報)関連情報 - [Mule 4 で HTTP リスナーソースを設定する場合の HTTP 応答の送信](https://docs.mulesoft.com/http-connector/1.7/http-listener-ref#sending-http-responses) # 型付けされたエラーの表示 `ListInventory`​ 操作で型付けされたエラーを表示するようにします。tshirt2.wsdl ファイルには、WSDL 操作にマップされる ​**TshirtFault**​ 型のエラーが含まれています。 - `OrderTshirt` - `ListInventory` - `TrackOrder` APIkit for SOAP は、次の種別の SOAP エラーをサポートしています。 - Soap Fault 1.1 - Soap Fault 1.2 型付けされたエラーが含まれないファイルでも、任意の WSDL ファイルを使用していずれかの種別を選択できます。 1. Anypoint Studio で、コマンドパレット内の ​**fault**​ を検索します。 複数の ​`SOAP Fault`​ コンポーネントが表示される場合があります。 2. `SOAP Fault`​ を ​`ListInventory:api-config`​ フローにドラッグします。 **「Operation Unavailable (操作は使用できません)」**​メッセージが表示された場合、操作をキャンセルして別の ​`SOAP Fault`​ コンポーネントを選択します。 3. バージョンの一致が見つかるまで、この手順を繰り返します。 4. プロパティエディターの ​**\[Module Configuration (モジュール設定)\]**​ で、​`soapkit-config`​ を選択します。 5. **\[Operation (操作)\]**​で、​`ListInventory`​ を選択します。 6. **\[Fault (エラー)\]**​ で、​`Fault`​ を選択します。 7. プロパティを保存します。 8. `Transform Message`​ コンポーネントを選択します。 9. DataWeave コードを次のように変更します。 ```raml %dw 2.0 output application/xml ns ns0 http://mulesoft.org/tshirt-service ns soap http://schemas.xmlsoap.org/soap/envelope/ --- { soap#Fault: { faultcode: "soap:Server", faultstring: "The error details", detail: { ns0#TshirtFault: { errorStuff: 500 } } } } ``` 10. プロジェクトを保存して、もう一度実行します。 SoapUI を使用して、​`ListInventory`​ 操作を実行します。 クライアントは、デフォルトのエラーの代わりに次のエンベロープを返します。 ```xml soap:Server The error details 500 ``` ## [](#関連情報)関連情報 - [SOAP ヘッダーの取得](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-get-header-task) # 実行時の動作の設定 次の設定により、実行時の APIkit for REST モジュールの動作が決まります。 - [クエリパラメーターとヘッダーの検証](https://docs.mulesoft.com/jp/apikit/latest/validate-4-task) - [レスポンスヘッダーと状況コードの設定](https://docs.mulesoft.com/jp/apikit/latest/configure-headers4-task) - [サービス URI の設定](https://docs.mulesoft.com/jp/apikit/latest/configure-service-uri-task) # 実装する操作の特定 実装された操作で何が起きるかを知るには、SoapUI を使用して API エラーを発生させます。次の例の手順に従って、​`John`​ という名前の顧客に対して ​`OrderTshirt`​ 操作を使用して SoapUI で要求を作成します。API はこの操作を処理できないため、SOAP エラーが発生します。 1. SoapUI で、新しい SOAP プロジェクトを作成して、デプロイされた Mule APIkit プロジェクトの URL を初期 WSDL に配置します。 この例では、URL は ​`http://localhost:8081/TshirtService/TshirtServicePort?wsdl`​ です。 ![新規 SOAP プロジェクトウィンドウで、初期 WSDL ファイル http://localhost:8081/TshirtService/TshirtServicePort?wsdl が表示されています](/mulesoft/current/ja-jp/apikit/latest/_images/soapui-new-project.png) 2. SoapUI で、要求エンベロープに値を入力して John 用の大きい T シャツを要求します。 1. **\[Projects (プロジェクト)\]**​ > ​**\[TshirtServicePort?wsdl\]**​ > ​**\[TshirtServiceSoapBinding\]**​ > ​**\[OrderTshirt\]**​ > ​**\[Request 1 (要求 1)\]**​ を選択します。 2. ``​ タグの間に​**「L」**​と入力します。 3. ``​ タグの間に​**「John」**​と入力します。 3. 要求を送信します。 結果は SOAP エラーになります。 ```xml soap:Server Operation [OrderTshirt:\soapkit-config] not implemented ``` ## [](#関連情報)関連情報 - [SOAP エラーの防止](https://docs.mulesoft.com/jp/apikit/latest/apikit-4-prevent-fault-task)