muleSoft勉強メモ

#### 目次
（2023/06/28）anypoint studioアプリ使い難い、勉強動画と現在サービスの画面配置や操作が違う、この二点が修正される後勉強再開
- [training勉強用アカウント作成](#training勉強用アカウント作成)
- [AnypointStudio練習用アカウント作成](#anypointstudio練習用アカウント作成)
- [Advanced REST Clientをインスドール](#advancedrestclientをインスドール)
- [API作成の流れ、段階分け使う機能](#api作成の流れ段階分け使う機能)
- 使われた動画教材[Anypoint Platform Development: Fundamentals (開発: 基礎) (Mule 4)](https://training.mulesoft.com/site/coursePlayer.do?dispatch=show&courseSessionId=dfd2ac75-9a29-11ea-9f48-0cc47adeb5f8)
- [練習用API](#練習用api)
- [イベントデータの構造](#イベントデータの構造)
- [練習用APIを作成](#練習用apiを作成)
- [RAMLを使ってAPI詳細を定義](#ramlを使ってapi詳細を定義)
- [Anypoint studioでapp作成](#anypoint-studioでapp作成)
- [databaseを追加](#databaseを追加)
-----
##### training勉強用アカウント作成
`https://www.mulesoft.com/`に入ったら、loginタグの下、実際muleサービス提供の「Anypoint platform」と勉強用の「training」があり、loginするには別々なアカウントが必要、つまり「training」で作ったアカウントは「Anypoint platform」登録出来ない。
![スクリーンショット 2023-03-02 10.43.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/5577b7d8-aad4-4a64-afbc-36cf5f6a1c95.png)
- 入門教材は「training」中、「Anypoint Platform Development: Fundamentals」をクリック、「Self-paced course」を選ぶ。日本語のバージョンもある。
  この教材は開発入門向のやつ。
  ![スクリーンショット 2023-03-02 11.10.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/5e98f37e-7df1-f0f5-554c-76d6c651f455.png)
  ![スクリーンショット 2023-03-02 11.11.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/14ec0422-8469-3dee-7c1c-5a26f3898c04.png)


##### anypointstudio練習用アカウント作成
- 画面のloginボタンの中でAnypoint Studioを選択、sign upでアカウントを作成
  ![スクリーンショット 2023-04-25 10.25.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/70ce7c00-3697-31c5-3336-2ba38cf56985.png)
- 「Anypoint platform」アカウント作る時、「company」項目の内容は「組織名」として表示される
  ![スクリーンショット 2023-03-02 10.33.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/efb8203d-9168-f177-7213-cfa6b824ff3a.png)
  ![スクリーンショット 2023-03-02 11.13.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/9ac0b888-b0a6-6ed7-ee12-c096afa40e0f.png)
- 自分アカウントの有効期限を確認は左上menuをクリック、「Access Management」をクリック、そして「runtime Manager」を選択。一個の練習用アカウントのは30日の有効期限がある、期限過ぎたあと、同じメアドと違うユーザ名でもう一回アカウント作成できる。
  ![スクリーンショット 2023-04-25 10.59.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/d0ca88fd-3ec8-ad0d-00e4-aca600e8722b.png)
  ![スクリーンショット 2023-04-25 11.02.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/502291e6-04f6-8ab0-cc93-276c64e030e6.png)
- Anypoint Studioの開発用APPをダウンロードするには、`mulesoft.com/lp/dl/studio`をアクセス

##### advancedrestclientをインスドール
`https://install.advancedrestclient.com/`に入り、installを押して、自分のパソコンに合うパッケージをダウンロード
![スクリーンショット 2023-04-25 10.41.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/a6a40cfe-fa5f-a3f8-8990-587d9172687e.png)
![スクリーンショット 2023-04-25 10.41.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/4f7d33bc-4a44-012c-6d57-88c8c44a57c6.png)


##### API作成の流れ、段階分け使う機能
- ここの「シミュレーション」は設計されたAPIを簡単な検証を行うこと。「フィードバック」はAPIを公開し、他の人が発見出来るようのこと。「検証」はユーズケースをAPIで検証のこと。
  ![スクリーンショット 2023-03-02 10.07.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/4333a14b-83a6-6b59-cc8c-7e3508015eb1.png)
- 出来たAPIを実装、mule App開発の時、「Anypoint Studio」を使う。テストの時「Munit」を使う。
  ![スクリーンショット 2023-03-02 10.13.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/4abd0c98-7ee8-6840-6741-c8e8351a2b6d.png)
- テスト完了のAPIを「API Manager」で管理、filtersなどの保護を掛ける。サービスをパフォーマンスの監視は「Runtime　Manager」で監視。
  ![スクリーンショット 2023-03-02 10.18.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/05b91ae0-a5f4-fa45-b583-ec243dccd1ca.png)
- 出来たAPIを資産として「Anypoint Exchange」で保存、再利用できる。
  ![スクリーンショット 2023-03-02 10.20.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/0d92669f-f8c7-bfa0-da5f-06fe92185bb3.png)
![スクリーンショット 2023-03-02 10.22.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/912119f9-0ce1-3b9a-73b7-e70036bff346.png)
![スクリーンショット 2023-03-02 10.23.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/d48fd5ef-232a-21a0-23c5-f1d58a6b170e.png)


##### 練習用API
- `https://anypoint.mulesoft.com/exchange/portals/muletraining/`で”American Flights API”を見つけ出し。左で一層一層のメソッドを確認
![スクリーンショット 2023-04-26 10.18.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/cf5fc5ce-5948-3de2-ef23-2743c01ee459.png)
  - 或いはAnypoint Platformのページに入り、左上Manuボタンをクリック「Exchange」に入り、そして左のmenu中に「public portal」をクリック、そして”muletraining”を検索
- このAPIのURL`http://training4-american-ws.cloudhub.io/api/flights`を、Advanced REST Client」に貼り付ける、右のsendボタン押すと、結果が戻る。
![スクリーンショット 2023-04-26 10.52.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/0c7f26d0-e74e-8066-01de-01170f3192d0.png)
  - 「raw」をクリックすると、未フォーマットされたデータが見れる
  ![スクリーンショット 2023-04-26 10.52.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/94214f6d-300d-8682-09c3-ead7dce6fd46.png)
  - URL右の「鉛筆」ボタン押すと、「add」でqueryパラメーターの追加ができる。例えば`destination LAX`を追加したら、destinationパラメーターが”LAX”の結果のみ返される。
    パラメーター左のボタンを使って、操作画面上のパタメーターを削除せず、無効化する事がでいる。
  ![スクリーンショット 2023-04-26 10.55.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/a8710f2a-ed14-b72c-5567-c34642c73ed0.png)
  ![スクリーンショット 2023-04-26 10.56.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/f36f67cd-f8a5-2949-346a-53a879718609.png)
  - post内容を作成時、「headers」のタブの下、「add」をクリックし、「name」に”Contant-Type”、「Value」に”application/json”を入れ。そして「BODY」タブの下でjsonを入力。
  ![スクリーンショット 2023-04-26 11.05.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/182c06be-6844-ce2f-6b02-3180fc7d8fcd.png)
  ![スクリーンショット 2023-05-08 17.09.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/9b5243fe-a684-cc9f-e7b6-ecc98dd60c1f.png)
  - PUTメソッド使って、既存のデータを修正できる、URLに”/3”を追加、データを特定
  ![スクリーンショット 2023-05-08 17.11.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/ab1fb0a7-4536-1a89-7991-a298ae488991.png)
- IDとsecretに保護されたAPIを試す、以下のURLに変更`http://training4-american-api.cloudhub.io/flights`に変換。この場合、「headers」でIDとSECRETを追加。
![スクリーンショット 2023-05-08 17.18.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/8dee1c57-77ed-71dc-330d-3e6e1b0f00de.png)
- 練習用の”American Flights API”のwebページ上、右でAPIの操作欄で、Advanced REST Clientと似た様な操作で、APIを試すことができる。「Select server」でMOCK API（固定内容返信するAPI）、或いは本番APIを選択できる。
![スクリーンショット 2023-05-08 17.31.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/83324f3a-468e-91ad-e03f-82a94396942f.png)

- APIコールよく使うbackコード
![スクリーンショット 2023-04-26 10.28.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/f34458fb-1968-3029-bb54-6625b6186c01.png)


##### イベントデータの構造
![スクリーンショット 2023-05-10 18.07.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/eda3694c-7a19-72cf-b4a5-fb277e221230.png)


##### 練習用apiを作成
design centerで「create」ボタンを押す、「New API Speification」をクリック、API名を入、「create API」を押す
![スクリーンショット 2023-05-15 18.27.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/0942c22a-b1c2-4285-3af3-3c0acca7eba8.png)
![スクリーンショット 2023-05-15 18.27.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/cd1fed96-1b6d-a5b9-1111-bd68dfd714c2.png)
RAMLコードでAPIメソッドを書き、メソッドの詳細を設計できる
![スクリーンショット 2023-05-15 18.28.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/df297ebf-bc1d-9096-86a5-7f1d28c5dee0.png)
![スクリーンショット 2023-05-15 18.29.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/885747f2-14b8-14f2-ae6d-467556805c93.png)
APIをテストしたい場合、メソッドのURLはmockサービスのURLで、上の「try　it」を押してテストを行う。
![スクリーンショット 2023-05-15 18.32.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/e0dfeb1a-554d-ed8b-d310-07ab5306fb3f.png)
![スクリーンショット 2023-05-15 18.34.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/ae246083-a107-3bf1-8a3c-332c94e6a286.png)
外部にもこのmockサービスをアクセスしたい場合、画面右の「mocking service configuration」をクリック、「Mack public」をONにし、有効期限を設定する。そしてAPI linkをコピーし、clientに貼り付け、後にメソッド名を入れ、headersには「Accept application/json」を設定、送信する。
![スクリーンショット 2023-05-15 18.37.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/df1d11ba-9dce-42af-386d-812f17044cab.png)
![スクリーンショット 2023-05-15 18.42.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/e296b491-041e-a7d2-fa9b-8a93db226740.png)


##### ramlを使ってapi詳細を定義
![スクリーンショット 2023-05-18 18.15.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/ab67f0f3-3ac2-ca6a-89be-ce56a5439548.png)
![スクリーンショット 2023-05-18 18.15.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/78338adf-53ba-4730-057c-cd246481d48d.png)
![スクリーンショット 2023-05-18 18.15.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/3ddb49ab-d75a-9cd3-c45d-8655e6439bac.png)
事前「１」の所で、参照用のRAMLファイルを追加し、ワークスペース「２」の所で反映、「３」の所でパスをコピー、「４」「５」の所で引用、「６」の所で内容を確認。
![スクリーンショット 2023-05-18 18.25.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/03e360f0-0738-4191-1b6e-f12b0e382e60.png)


##### anypoint-studioでapp作成
1でhttp listenerを追加、2でlistener詳細を表示、3で設定を追加、4はデフォルトの設定
![スクリーンショット 2023-05-25 17.44.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/11b16e2a-6026-78ac-233c-975c52086ce8.png)
pathを設定、右上saveアイコンで保存
![スクリーンショット 2023-05-25 17.49.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/37835b51-d762-1f34-cef1-2caf083cf035.png)
資材表示画面の下で、資材の表示方を選択できる、そして設定画面にも入れる
![スクリーンショット 2023-05-25 17.52.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/c0b46779-d9dc-57c0-11b0-c5c6c47785bd.png)
右「core」項目の中でpayloadを選択、listenerの後ろに追加、そして下の「settings」で数式を設定
![スクリーンショット 2023-05-25 17.55.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/b8730ce7-7306-bea8-98d2-0f7a1f2758d1.png)
資材表示画面の下で「configuration XML」画面で、現在資材はxmlコードで表示される
![スクリーンショット 2023-05-25 17.59.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/bde31627-dee5-8173-f3f1-3bd8a9d54bdd.png)
資材表示画面右クリックで現在のappを走る、下の「console」で状況表示される
![スクリーンショット 2023-05-25 18.00.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/ad739acf-9a87-e21f-6d4b-17ae3405b3fe.png)
![スクリーンショット 2023-05-25 18.00.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/d4e3e655-3032-2cc7-f5aa-997fb6b5cb62.png)


##### databaseを追加
画面右の「add modules」をクリック、databaseを中にドロップする
![スクリーンショット 2023-05-26 17.23.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/755aa2ee-a43a-8081-b42d-ce0bc03498f7.png)
databaseのselectを選択し、画面に追加
![スクリーンショット 2023-05-26 17.31.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/6c696047-db1c-4580-151b-331509ec8cab.png)
画面上「select」をクリックし、詳細の「＋」ボタンを押し、「connection」を設定、接続情報を入力。そして「configure」ボタン押し、maven dependencyを追加
```:練習用のDB接続情報
* MySQL database
db:
  host: "mudb.learn.mulesoft.com"
  port: "3306"
  user: "mule"
  password: "mule"
  database: "training"
```
![スクリーンショット 2023-05-26 17.32.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/fbad3ed2-d696-2f21-b802-aba18beffc85.png)
![スクリーンショット 2023-05-26 17.37.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/fef63937-2b21-282d-098c-dd3f6455ebbe.png)