MuleSoft系列(四)-用Anypoint Studio創建一個Mule應用程序


在MuleSoft中,創建Application的方式有三種

  • Flow Designer:用於構建連接系統並使用API的集成應用程序的Web應用程序
  • API Designer:用於設計,記錄和模擬API的Web應用
  • Anypoint Studio:桌面IDE,用於實現API和構建集成應用程序

那么來看看如何使用Anypoint Studio創建一個Mule應用程序:

打開Anypoint Studio,新建一個Mule Project,輸入項目名稱:BolgTest

在創建Mule Project的界面上,可以看到整個界面核心分為:包資源管理器(Package Explorer)、畫布(Canvas)、mule 組件庫(Mule Palette)、控制台(Console)

  • 包資源管理器:項目文件夾
  • 畫布:Anypoint studio使用的組件都是直接拖拽搞定的,所以操作界面被稱為畫布
  • Mule 組件庫:Mule Palette直譯過來應該是Mule 調色板,不過這東西本質上是很多Mule的組件,拖到畫布上就能使,所以我翻譯成組件庫
  • 控制台:輸出日志,查看組件詳細信息的區域

MuleSoft出的這個Anypoint Studio一般來說不需要我們強編碼,他的體系更多的是一種配置化的實現,所有的組件都直接拖到畫布上進行配置,從這一點來說,很類似.Net的開發模式,甚至更加簡單,那么我們先拖一個HTTP的組件到畫布上,命名為:TestHttpListener

然后點擊 Basic Setting → 加號,打開 Global Element Properties窗口,確認參數配置是否為下列值

  • Host: 0.0.0.0
  • Port:8081

點擊OK,然后在Path 上填個測試的接口地址,比如 /test,最后Apply Changes.

 接下來配置輸出內容,從Mule 組件庫拖一個Set Payload組件到畫布上

修改Set Payload組件的屬性,設置為 Test Message

Tips: Set Payload的屬性,設置Value的時候有兩種模式,一種是公式類型,也就是動態字段,一種就是文字類型,這里使用文字模式作為測試效果

我們可以啟動這個項目,右鍵畫布,選擇 Run Project,此時會看到控制台開始輸出啟動日志,也就是說這個Mule應用程序已經成功啟動

打開接口測試工具,選擇Get請求,地址為:http://localhost:8081/test,測試接口請求結果會發現,返回信息是我們輸入的 ”Test Message“

OK,在上面的Demo搞定后,我們來嘗試鏈接MySQL數據庫,這里會借助MuleSoft官方的測試接口進行

回到Anypoint Studo,關閉項目,然后右鍵刪除Set Payload組件,在Mule組件庫里面找Database,選擇Select 類型,然后拖到畫布上

 

接下來配置MYSQL的數據庫連接信息,點擊Basic Setting 右側的加號,打開 Global Element Properties屬性窗口,將Connection 設置為MySQL Connection,然后是數據庫賬號信息,分別如下:

  • host: "mudb.learn.mulesoft.com"
  • port: "3306"
  • user: "mule"
  • password: "mule"
  • database: "training"

接着下載MySQL JDBC驅動程序,點擊Configure按鈕,選擇Add Maven dependency,搜索mysql- ,在顯示列表中選擇 mysql:mysql-connector-java,點擊Edit  selected, 再點擊Finish,然后等待MySQL JDBC驅動器的下載

下載完成后,回到Global Element Properties,點擊Test Connection按鈕,應該會得到一個連接成功的信息,然后就可以關閉彈窗,關閉Global Element Properties窗口,回到主界面

Tips: 如果鏈接數據庫失敗,請確認3306端口的訪問有沒有被占用,或者被防火牆擋住

完成對數據庫的鏈接配置后,我們寫入SQL語句:SELECT * FROM american

此時如果你直接通過接口測試工具去訪問接口,會得到一個異常,這是因為還沒有配置數據輸出組件

在Mule組件庫中拖一個名為Transform Message的組件到畫布上,在Transform Message的屬性視圖中,我們修改輸出類型為output application/json,並將{}替換為payload,保存

 然后重新啟動Mule應用程序,通過接口測試工具訪問接口Test,可以看到響應狀態200,並返回對應的JSON信息

根據之前在Anypoint平台的操作,接下來我們要嘗試的就是將接口傳遞回來的信息轉義成其他結構

點擊blogtestFlow,在屬性視圖中切換到Metadata,點擊Add metadata, 選擇Output:Payload,點擊編輯,在新的窗口點擊Add按鈕,設置Type Id為:american_flights_json,選擇Type為JSON,選擇Schema為Example,然后打開示例文件american-flights-example.json,點擊Select

american-flights-example.json 文件內容如下:

[{
    "ID": 1,
    "code": "ER38sd",
    "price": 400.00,
    "departureDate": "2016/03/20",
    "origin": "MUA",
    "destination": "SFO",
    "emptySeats": 0,
    "plane": {
        "type": "Boeing 737",
        "totalSeats": 150
    }
}, {
    "ID": 2,
    "code": "ER45if",
    "price": 345.99,
    "departureDate": "2016/02/11",
    "origin": "MUA",
    "destination": "LAX",
    "emptySeats": 52,
    "plane": {
        "type": "Boeing 777",
        "totalSeats": 300
    }
}]

回到Transform Message屬性視圖,現在看到的界面如下:

接下來就是拖拽字段進行關聯映射

  • ID → ID

  • price → price

  • totalSeats → plane > totalSeats

  • toAirport → destination

  • takeOffDate → departureDate

  • fromAirport → origin

  • seatsAvailable → emptySeatsplane

  • planType → plane > type

比較特殊的,將兩個字段映射到同一個字段,會進行字符串的鏈接

  • code1 → code
  • code2 → code

字段映射成功后,保存修改,然后重新運行項目,通過接口測試工具查看接口返回值,前后JSON結構對比如下:

回到Anypoint Studio,我們發現接口已經調用成功,但是從接口描述上還沒有接口返回數據的示例,那么怎么做呢?回到Transform Message屬性視圖,點擊Preview,點擊 ”Create required sample data to execute preview“, 在input部分,出現一個新的頁簽payload,其中包含輸入元數據生成的樣本數據,在output部分,也可以看到對應的輸出JSON示例,不過看到很多???,在input中用任意字符串替換???即可

完成上述步驟后,我們復制一份流bolgtestFlow,粘貼在畫布的下方,這一過程直接Ctrl + C 然后在畫布上Ctrl + V即可,如下圖:

將第二個流程更名為getFlightsByID,方便調用和記憶,然后點擊getFlightsByID中的HTTP監聽器,修改路徑包含一個請求ID

然后修改數據庫中的查詢語句,同時傳入請求參數ID

保存然后運行項目,在接口測試工具上測試新的接口,可以看到,傳入不同的參數ID能拿到不同的記錄數據

以上是對MuleSoft借助Anypoint Studio開發的流程示例,以及一個簡單的get請求

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM