LoginSignup
6
4

More than 1 year has passed since last update.

MulesoftでAPI開発~API仕様を作って取り込む~

Posted at

はじめに

APIを作成する際、通常は
1. API仕様を作成
2. API仕様をAnypointStudioに取り込む
3. AnypointStudioでAPIを実装する

という流れでAPIを作っていきます。
なので前回の記事では、いきなり

3. AnypointStudioでAPIを実装する

をやっていたことになります。
今回は上記の

1. API仕様を作成
2. API仕様をAnypointStudioに取り込む

の部分をやっていこうと思います。

API仕様の記法の選択

MulesoftではAPI仕様の作成において

  • RAML
  • OpenAPI

の2つの記法が可能です。
Mulesoftの公式ドキュメントではRAMLがメインな感じでに記載されていますが、
本記事では利用者の多いと思われるOpenAPIでやっていきます。
image.png

API仕様の作成

AnypointPlatform上にある、DesignCenterを使って作成します。

DesignCenterにアクセスする

AnypointPlatformにログイン後、[Start designing]をクリック
image.png

[+Create new] -> [New API Specificatoin]をクリック

image.png

API仕様の記法の選択

  • API名の設定:今回は hello-muleと名付けました
  • API機能の選択:今回は OAS3.0(YAML) を選択しました
    ※OAS:OpenAPI Specificationの略

image.png

API仕様を記述する画面の構成

画面の構成を見ていきます。

エクスプローラ
画面左側はAPI仕様のファイルが表示されています。
[+]ボタンからフォルダやファイルを追加することができます。
image.png

仕様の記述部分
画面中央にAPI仕様を記述していきます。
image.png

入力支援機能
仕様の記述部分の下には、
現在のカーソル位置に合わせて入力可能なキーワードが表示されます。
下図ではtitle: hello-muleから改行した位置にカーソルを当てた際に
入力候補が表示されている状態を載せています。
image.png

プレビュー
画面右側は記述中のAPI仕様のプレビューがリアルタイムで反映されます。
image.png

API仕様の記述

OpaneAPIの仕様

初期状態は

openapi: "3.0.0"
info:
  version: 1.0.0
  title: hello-mule
paths: {}

となっています。
今回のAPIの仕様は以下のようなものにします。

  • HTTPメソッド:GET
  • APIのパス:/hoge
  • リクエストパラメータ:なし
  • レスポンス形式:json
    • hello:xxx
openapi: "3.0.0"
info:
  version: 1.0.0
  title: hello-mule
paths:
  /hoge:
    get:
      responses:
        "200":
          description: ok
          content:
            application/json:
              schema:
                type: object
                properties:
                  hello:
                    type: string
              example: 
                hello: "mule!"

API仕様のモックを動かしてみる

ここまで書くと、画面右側のプレビューからAPIモックで動作確認することができます(すごい)。

[GET]をクリック

image.png

[Try it]をクリック

記述したAPIエンドポイント/hogeの仕様が確認できます。
右上の[Try it]をクリックします。
image.png

[Send]をクリック

ヘッダやリクエストパラメータがあればここで設定できます。
image.png

レスポンスを確認

[Send]ボタンの下に結果が表示されました。
image.png

あくまでモックなので、
リクエストパラメータ等による動的な結果は得られません。
ここで得られる結果は

              example: 
                hello: "mule!"

の固定した内容です。

APIをPublishする

API仕様の記述が完了したらPublishします。
Publishすることで、API仕様がExchangeに公開され、
AnypointPlatformを利用している他のメンバも仕様を見ることができるようになります。

また、今回の目的である
AnypointStudioでのAPI仕様を取り込んだAPI実装が可能になります。

[Publish] -> [Publish to Exchaange]をクリック

image.png

Publishの実行

バージョンを入力して[Publish to Exchange]をクリック
image.png

Publish中

image.png

Publish完了

image.png

PublishしたAPIをExchangeで確認する

Exchangeに移動

AnypointPlatformのトップページからも行けます。
image.png

Exchange上でもモック動作確認が可能

Exchange上ででAPI仕様が公開出来ていることを確認できました。
ExchangeでもDesignCenterと同様、モックを動かすことができます。
image.png

AnypointStudioでAPI仕様を取り込む

AnypointStudioにAnypointPlatformのアカウントの設定をした状態で行ってください。
AnypointPlatformのアカウントの設定は以下に載せています。

MulesoftでAPI開発~APIをCloudHubにデプロイ~

[File] -> [New] -> [Mule Project]

image.png

プロジェクト名を入力し、[+]ボタンをクリック

image.png

[from Exchange]を選択

image.png

ExchangeでAPI仕様を検索し、取込み対象を選択

DesignCenter上でAPI仕様を作成した際のユーザIDを選択し、
API仕様名を入力すると、自動で検索される。
image.png

取込み対象のAPI仕様を選択 -> [Add] -> [Finish]
image.png

[Finish]をクリック

image.png

これでAPI仕様を取り込んだプロジェクトが生成されます。

作成したプロジェクトの確認

PackageExplorer

image.png

このような感じになっています。

  • hello-mule.xml ではフローが自動生成されています(後述で中身見ていきます)
  • hello-mule[v1.0.0] ではDesignCenterで生成したAPI仕様のファイルがzip形式で取り込まれています。

自動生成されたフロー(hello-mule.xml)

3つのフローが自動生成されています。

(1)メインのフロー
image.png

メインのフローには以下の特徴があります。

  • APIkit Routerを含む
    APIkit RouterにはリクエストされたAPIエンドポイントのパスごとに、
    それぞれの専用のフローに割り振る役目があります

  • エラーハンドリングを含む
    デフォルトでどのAPIにも必要となりそうなエラーハンドリングが生成されています。

コンソール用フロー
image.png

APIを起動した際、ExchangeのようなAPIコンソール画面を起動するためのフローです。
API起動後、{URL}/consoleにアクセスすると以下のような画面が起動し
APIの動作確認が可能となります。
image.png

APIエンドポイントのフロー
メインのフローにあるAPIkit Routerから呼び出されるサブフローとなります。
つまり/hogeのAPIエンドポイントへのリクエストはAPIkit Routerによって、
こちらのサブフローに処理が割り振られるようになっています。
image.png

また、TransformMessageオブジェクトには下図のように、
デフォルトでAPI仕様のsampleに記載したjson形式のレスポンスが設定されています。
image.png

まとめ

以上のようにAnypointPlatformのDesignCenterで記述したAPI仕様をベースとして、
AnypointStudioでプロジェクトを作成し、API実装ができる状態まで出来るようになりました。

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4