因?yàn)楣倬W(wǎng)的搭建內(nèi)容篇幅較長,翻譯過來花了一點(diǎn)時(shí)間,按照現(xiàn)在本文的步驟已經(jīng)可以完整的搭建并發(fā)布 api, 下一篇再講解怎么消費(fèi) Api。有需要的話根據(jù)點(diǎn)贊情況考慮直接發(fā)布操作視頻,幫助大家省去閱讀時(shí)間。
HOME
背景:
客戶和員工需要從智能手表、桌面應(yīng)用等不同設(shè)備之間獲取大量的數(shù)據(jù)和令人愉悅的數(shù)據(jù)體驗(yàn)。為了提供這樣的體驗(yàn),你的系統(tǒng)必須相互關(guān)聯(lián),且這些數(shù)據(jù)需要在不同的系統(tǒng)直接流轉(zhuǎn)(集成)
MuleSoft 通過使用一系列的API將數(shù)據(jù)從不同的系統(tǒng)中進(jìn)行集成。讓你能夠花費(fèi)較少的時(shí)間在 IT 項(xiàng)目上,而把注意力更多的關(guān)注在你的核心業(yè)務(wù)。無論什么時(shí)候當(dāng)你要將業(yè)務(wù)流程轉(zhuǎn)換成 API,在下一個(gè)工程中去實(shí)現(xiàn)這個(gè)流程將會(huì)變得非常簡單。API 的粒度是目前被證實(shí)最適合代碼重用的大小。

Anypoint 平臺(tái)通過重用 API 幫助你構(gòu)建一個(gè)結(jié)構(gòu)明確并且可以連接各種應(yīng)用程序、數(shù)據(jù)和應(yīng)用程序網(wǎng)絡(luò)。統(tǒng)一的 Anypoint 平臺(tái)可以很容易發(fā)現(xiàn)、創(chuàng)造并且管理模塊化的 API、組織層級。Anypoint 平臺(tái)改變通過檢索來排查隨機(jī)和不穩(wěn)定的代碼片段的方式,可以通過“購買”行業(yè)內(nèi)最佳實(shí)踐生產(chǎn)創(chuàng)建的 API。
探索 Anypoint Exchange
那些你在 MuleSoft 中構(gòu)建的用于集成應(yīng)用程序和服務(wù)的API 在設(shè)計(jì)上是可重用的,并且在構(gòu)建的時(shí)候考慮了企業(yè)的安全性。你會(huì)在 Anypoint Exchange 上找到這些 API 和 連接器、樣例、模版。
Exchange 同樣提供了 RAML 片段、自定義包、視頻、文檔鏈接和其他資源。
設(shè)計(jì)和構(gòu)建基于 API 的集成
Anypoint 工作臺(tái)是一個(gè)基于 Eclipse 的 IDE,可以幫助你構(gòu)建集成。Data Center 是一個(gè)基于 Web 的工具,可以幫助你生成 API 規(guī)范,這是數(shù)據(jù)集成的基礎(chǔ)。
集成測試工具
在你發(fā)布集成之前,你可以通過 MUnit 、Troubleshooting 來進(jìn)行測試。
集成發(fā)布
發(fā)布集成到生產(chǎn)環(huán)境中
管理集成
一旦你的集成開始在生產(chǎn)中運(yùn)行,你需要監(jiān)測它的行為
管理 Anypoint Platform 功能
在開發(fā)或者發(fā)布之后,你可以對集成進(jìn)行修改。
從頭開始構(gòu)建一個(gè) API
主要的過程:
- Prerequisites 前提
- Design an API Specification 設(shè)置 API 規(guī)范
- Develop the API 開發(fā) API
- Add Validation and Error Handling 添加驗(yàn)證和錯(cuò)誤處理
- Deploy to CloudHub 部署到 CloudHub
- Operate the API 操作API。
Step1 構(gòu)建 API 的前提
在你開始 API 構(gòu)建之前,需要確認(rèn)你有所要求的工具和權(quán)限:
- Anypoint Platform 組織的用戶名和密碼,如果你沒有的話,需要通過 Anypoint Platform 創(chuàng)建一個(gè)組織賬號:
Anypoint Platform - 下載 Anypoint Studio 7.4.1 或者更高版本。Anypoint Studio 是一個(gè)基于 Eclipse 的IDE,擁有完備的構(gòu)建、發(fā)布App功能
下載地址:https://www.mulesoft.com/lp/dl/studio - 測試 REST 請求,通過 Advanced REST Client 或者 Postman 如果你沒有的話,可以參考安裝 Advanced REST Client:Advanced REST Client
實(shí)用技巧:
- 使用兩個(gè)瀏覽器窗口,一個(gè)用來閱讀說明,另一個(gè)執(zhí)行
STEP 2設(shè)計(jì) API 規(guī)范
設(shè)計(jì)一個(gè) API,需要評估目的和要求:
- 識(shí)別 API 的類型:是一個(gè)簡單的 API,還是集成的一部分,或者是一個(gè)后端系統(tǒng)的一部分。
- 了解數(shù)據(jù)流:單向、雙向、還是更多
- 探索安全要求
在你定義了你集成項(xiàng)目的 scope 和 flow 之后,在 RAML 或者 OAS 上定義一個(gè) API 規(guī)范,然后,下一步你將使用這個(gè) API 規(guī)范來快速開發(fā)一個(gè) API
API 規(guī)范和 API
一個(gè) API 就是被發(fā)布的接口資源,任何一個(gè)人只要有合法權(quán)限和合理的請求結(jié)構(gòu)都可以訪問。
一個(gè) API 規(guī)范說明了 API 的功能和預(yù)期行為,同時(shí)包括了基礎(chǔ)的設(shè)計(jì)哲學(xué)和所支持的數(shù)據(jù)類型。它包含了文檔和 API 定義從而創(chuàng)造出人員和軟件都可以閱讀的約定。
MuleSoft 提供工具讓創(chuàng)建一個(gè) API 規(guī)范變得更加簡單,你可以分享給你的團(tuán)隊(duì)、客戶或者普通大眾。通過使用 API 規(guī)范來縮短項(xiàng)目完成時(shí)間
STEP2.1 探索已有的 API 規(guī)范
如果你需要在寫之前找一個(gè)已有的 API 規(guī)范,來學(xué)習(xí)其他跟你有相似情況的人員都是怎么做的。同樣的,你可以檢查是否自己尚未開發(fā),但是探索發(fā)現(xiàn)具有相同目標(biāo)的 API 規(guī)范,適當(dāng)?shù)闹赜盟?/p>
尋找已經(jīng)滿足需求的 API 規(guī)范很容易:
- 在 public Exchange 中找,這是一個(gè)由 MuleSoft 托管的門戶,其中包含 API 規(guī)范、Connector和其它你可以下載或使用的資源。你將在登錄頁看到一些非常流行的 API 規(guī)范、Connectors 和其它資產(chǎn)。
- 在 Exchange 中找你的組織賬戶。
STEP 2.2 創(chuàng)造你自己的API規(guī)范
首先創(chuàng)建一個(gè)簡單的 Hello world API 樣例,返回一個(gè)簡單的 GET 請求。做這件事,需要使用 API 設(shè)計(jì)器和一部分 Design Center。
- 打開 API 設(shè)計(jì)器。Design Center
- 點(diǎn)擊新建一個(gè)API設(shè)計(jì)器
- 選擇 API Spec
- 輸入 hello-world
- 點(diǎn)擊創(chuàng)建 SPI Spec
- 刪除已有的文本并粘貼以下內(nèi)容
#%RAML 1.0
title: hello, world
version: v1
description: A greeting for the world
types:
greeting:
properties:
todays-greeting: string
/greeting:
get:
responses:
200:
body:
application/json:
type: greeting
example:
{todays-greeting: "test-greeting"}
404:
body:
application/json:
properties:
message: string
example: |
{
"message" : "Greeting not found"
}
這個(gè) API 規(guī)范包含:
- 單個(gè)的 HTTP 請求,GET
- 單個(gè)數(shù)據(jù)類型, greeting,和單個(gè)的屬性:todays-greeting 和一個(gè)樣例值
- 一個(gè) HTTP 成功的 response
- 一個(gè) HTTP 失敗的 response
STEP 2.3 測試你的 API 規(guī)范
一個(gè) API 規(guī)范 hello-world.raml 完成,接下來需要來發(fā)送一個(gè)請求進(jìn)行測試。這個(gè)mock服務(wù)根據(jù)你的 API 規(guī)范創(chuàng)建一個(gè)功能端點(diǎn),并提供一個(gè)簡單的 UI來管理身份驗(yàn)證、請求頭和相應(yīng)頭。
- 打開 hello-world.raml 文件
- 點(diǎn)擊 document 按鈕
-
尋找標(biāo)簽 API endpoints 你可以看到你定義的 endpoint。HTTP請求顯示在綠色的框中
get-button.png
當(dāng)前頁面的形態(tài):已經(jīng)改版,目前找不到這個(gè) get 接口的測試入口。

STEP 3 開發(fā) API
你已經(jīng)創(chuàng)建了一個(gè) API 規(guī)范,那么接下來就可以開始開發(fā) API
在 Anypoint Platform,開發(fā)者將 API 打包部署到 Mule 運(yùn)行時(shí)引擎實(shí)例的應(yīng)用程序中。Mule 是一個(gè)運(yùn)行在 Mule app的輕量級的集成引擎。Mule 的實(shí)例嵌入在 Studio 還有你部署 Mule 應(yīng)用程序和API 的環(huán)境中。這些環(huán)境被稱為 targets。一個(gè) target 是嵌入在 studio ,你可以用來開發(fā)和測試的 Mule。另一個(gè) target —— CloudHub 是用來管理 mulesoft 并且基于云的。
這個(gè)教程將給你展示如何在 Studio 中首先部署 Mule。當(dāng)這個(gè) API 完成了你將在 CloudHub 中將其部署到 Mule
Anypoint Platform 四大板塊:
- Package Explorer: 幫助導(dǎo)航到文件或者創(chuàng)建工程
- Canvas:畫布可以拖拽組件到你的工程,連接它們,創(chuàng)建流程
- Mule Palette : 提供一個(gè)標(biāo)準(zhǔn)或自定義資源的快速入口,例如 Connectors 和 modules
- Console: 底部提供設(shè)置對話框配置,Mule debug 和其它開發(fā)者對話框
STEP3.1 將 Anypoint 平臺(tái)憑據(jù)添加到 Studio
一旦在 Studio 中添加 Anypoint 平臺(tái)憑據(jù),就可以應(yīng)用于你創(chuàng)建的所有項(xiàng)目中。
- 打開 studio,點(diǎn)擊 Anypoint Studio > Preferences
- 選擇 Anypoint Studio > Authentication
- 輸入 Anypoint Platform 的用戶名和密碼
-
Apply and Close
截屏2021-11-19 下午5.58.11.png
STEP3.2 通過導(dǎo)入 API 規(guī)范來創(chuàng)建一個(gè)新的 Studio 項(xiàng)目
在這個(gè)步驟里,我們將創(chuàng)建這個(gè)工程
- 在 Studio 中,選擇 File > New > Mule Project
- 在彈出的對話框中輸入如下信息:
- project Name : Hello
- Runtime:如果有選擇的話,選擇 Mule 最新的版本。這個(gè) Mule 的運(yùn)行時(shí)引擎,主要用于 Studio的測試
-
選擇 From Exchange
截屏2021-11-19 下午6.02.42.png
-
滾到底部勾選驗(yàn)證
截屏2021-11-19 下午6.05.28.png Finish
-
在 Studio 中創(chuàng)建一個(gè) XML 文件,hello.xml 然后打開畫布 MessageFlow,這上面顯示了 API 接口所需的基礎(chǔ)的組件
截屏2021-11-19 下午6.09.44.png
如果你滾到畫布下方,你可以看到所有已經(jīng)添加到你 API 規(guī)范中的腳手架
- HTTP 監(jiān)聽器已經(jīng)準(zhǔn)備好接收請求
- APIKit 路由器消息路由
- 不同錯(cuò)誤條件的錯(cuò)誤處理器
- 一個(gè) console, 但是本教程不會(huì)使用
- 對端點(diǎn) /greeting 的 GET 請求,我們將在其中做大量配置

注意,這個(gè)界面有三個(gè)不同的畫布視圖
- Message Flow:可以輕松拖拽模塊、鏈接器和其它資源,并在它們之間創(chuàng)建關(guān)系
- Global Elements:可以輕松指定在多個(gè)項(xiàng)目中使用全局元素
- Configuration XML:可以很容易的直接編輯項(xiàng)目的 XML
讓我們來驗(yàn)證一下在流程畫布的頂部監(jiān)聽器中設(shè)置的值:

雙擊監(jiān)聽器,來展示它的一般配置項(xiàng)。
-
點(diǎn)擊在 configuration name 旁的編輯按鈕,然后驗(yàn)證 host 為 0.0.0.0 端口為 8081
截屏2021-11-29 下午8.18.44.png -
點(diǎn)擊 Test Connection 然后當(dāng)測試成功之后點(diǎn)擊確認(rèn)按鈕。
截屏2021-11-29 下午8.19.25.png -
選擇 OK 來關(guān)閉配置(Configuration),會(huì)自動(dòng)展現(xiàn) Global Elements 選項(xiàng)卡
截屏2021-11-29 下午8.22.14.png 點(diǎn)擊 Message Flow 來返回原先選項(xiàng)。監(jiān)聽器中一般項(xiàng)配置的值仍應(yīng)顯示。
-
驗(yàn)證 Path 值是否設(shè)置為/api/,這個(gè)最佳實(shí)踐可以確保所有端點(diǎn)都采用 base-URI/api/endpoint 形式
截屏2021-11-29 下午8.25.39.png
- 點(diǎn)擊 File > Save All 來保存你的作品
接下來,我們將創(chuàng)建業(yè)務(wù)邏輯和微我們的 API 配置所需的元素。
STEP3.3 配置 API
通過使用 Studio 提供的腳手架,通過配置 /greeting 端點(diǎn)模塊來完成 API。
- 畫布的在 Message Flow 選項(xiàng)卡中,滾到底知道你看到 /greeting 端點(diǎn)模塊
[image:8081F580-B44D-41C8-B68F-61DF21504F0C-1894-00000AD0B35044E2/截屏2021-11-29 下午8.29.34.png]
-
右擊 Transform Message 然后刪除
截屏2021-11-29 下午8.31.38.png -
在 Mule Palette 中 選擇 Favorites 可以看到一系列核心 connector
截屏2021-11-29 下午8.32.09.png -
點(diǎn)擊 Set Payload 選中,然后把它拖拽到你刪除 Transform Message 的地方,在 Source 標(biāo)簽的右側(cè)
截屏2021-11-29 下午8.33.33.png -
指定顯示在 hello API 響應(yīng)中發(fā)送數(shù)據(jù)的邏輯:
- 點(diǎn)擊你剛剛加入到流程的 Set Payload transformer
-
在畫布的地步,在 General 選項(xiàng)卡中,點(diǎn)擊 fx(function)按鈕來取消選中它,這個(gè)教程中,我們對值進(jìn)行硬編碼。
截屏2021-11-29 下午8.36.50.png
- 保存你的作品:File > Save All
- 點(diǎn)擊 Configuration XML 在畫布底部,review 剛剛你操作生成的 XML 文件
- 點(diǎn)擊 Message Flow 來進(jìn)入畫布配置的下一步
你已經(jīng)創(chuàng)建了一個(gè)簡單的 Mule app 項(xiàng)目,并且可以部署該應(yīng)用來公開你的 API
跟典型生產(chǎn)的 API 相比,這個(gè) API 是得到簡化的
Payload(GET 請求提供的內(nèi)容)在項(xiàng)目配置中進(jìn)行了硬編碼。在生產(chǎn)就緒的 API 中,Payload 通常來自于其它來源,或者是變量或者 DataWeaver 公式的函數(shù)
為了簡潔起見,已經(jīng)跳過將接口和實(shí)現(xiàn)(業(yè)務(wù)邏輯)分離到單獨(dú) XML 文件中的最佳實(shí)踐。
STEP3.4 測試 API
在 Mule 允形式引擎中包含了你的 API 的 Studio 項(xiàng)目,然后使用第三方客戶端進(jìn)行測試:
-
在畫布任意空白處右擊,選擇 Run project
截屏2021-11-29 下午8.45.44.png
console 中會(huì)顯示狀態(tài)消息,當(dāng)顯示以下消息時(shí),說明包含你的 API 應(yīng)用程序已經(jīng)部署到 Mule 了
截屏2021-11-29 下午8.50.55.png
-
測試這個(gè) APP, 打開 REST 客戶端(Advance Rest Client)然后發(fā)起一個(gè) GET 請求
截屏2021-11-29 下午8.52.04.png 右擊畫布,選擇 Stop project 結(jié)束服務(wù)請求
STEP3.5 在你的組織中創(chuàng)建一個(gè)Business Group
在你發(fā)布你的 API 到 Exchange 分享給其他人之前,你必須要?jiǎng)?chuàng)建一個(gè) Business Group在你的測試組織里。 Exchange 上的資產(chǎn)必須屬于非主Business Group 的 Business Group
如果你并沒有現(xiàn)在就打算創(chuàng)建一個(gè) Business Group你可以跳過這一步。
創(chuàng)建 Business Group:
登陸你 Anypoint platform 賬號https://anypoint.mulesoft.com/login/#/signup
-
找到 Management Center 在登錄頁,然后在下方單擊中 Access Management
截屏2021-11-29 下午8.58.08.png -
點(diǎn)擊 Add Business Group 并輸入以下值:
截屏2021-11-29 下午8.59.06.png- Business Group name:My Top Business Group
- Owner: 查找你自己的名字,然后選中
- 選擇 Owner can create environment 選項(xiàng)
- 其它值保持默認(rèn)
[image:19DEFFD8-B12D-40F0-9F11-4E44847AB5B8-1894-00000ADBB8B84986/截屏2021-11-29 下午9.02.37.png]
-
點(diǎn)擊 Add Business Group 你新的 business Group 就會(huì)在“Access Management”列表中的組織名稱下方。截屏2021-11-29 下午9.02.48.png
STEP 3.6 發(fā)布 API 到 Exchange 上
發(fā)布 API 到 Exchange 然后可以作為一個(gè)模版或者樣例給別人使用。
- 在 Studio 中的 Package Explorer 右擊 hello 項(xiàng)目
- 選擇 Anypoint Platform >Publish to Exchange
[image:EA5835E5-6D99-4632-8920-B3F1899531C1-1894-00000B3FBF0881DC/截屏2021-11-30 下午3.52.32.png] - 輸入值:
- User :選擇你的名字
- business group:選擇你創(chuàng)建的 business group 注意,不能使用主的 business group。如果你的證書過期了,點(diǎn)擊 Add account 重新登陸。
- Version:默認(rèn)項(xiàng)
-
選擇 project type > example 點(diǎn)擊 Finish 按鈕。
截屏2021-11-30 下午3.57.10.png




















