MuleSoft 從零開始搭建 API(上)

因?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í)最適合代碼重用的大小。


api-led-architecture.png

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

主要的過程:

  1. Prerequisites 前提
  2. Design an API Specification 設(shè)置 API 規(guī)范
  3. Develop the API 開發(fā) API
  4. Add Validation and Error Handling 添加驗(yàn)證和錯(cuò)誤處理
  5. Deploy to CloudHub 部署到 CloudHub
  6. Operate the API 操作API。

Step1 構(gòu)建 API 的前提

在你開始 API 構(gòu)建之前,需要確認(rèn)你有所要求的工具和權(quán)限:

  1. Anypoint Platform 組織的用戶名和密碼,如果你沒有的話,需要通過 Anypoint Platform 創(chuàng)建一個(gè)組織賬號:
    Anypoint Platform
  2. 下載 Anypoint Studio 7.4.1 或者更高版本。Anypoint Studio 是一個(gè)基于 Eclipse 的IDE,擁有完備的構(gòu)建、發(fā)布App功能
    下載地址:https://www.mulesoft.com/lp/dl/studio
  3. 測試 REST 請求,通過 Advanced REST Client 或者 Postman 如果你沒有的話,可以參考安裝 Advanced REST Client:Advanced REST Client

實(shí)用技巧:

  1. 使用兩個(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。

  1. 打開 API 設(shè)計(jì)器。Design Center
  2. 點(diǎn)擊新建一個(gè)API設(shè)計(jì)器
  3. 選擇 API Spec
  4. 輸入 hello-world
  5. 點(diǎn)擊創(chuàng)建 SPI Spec
  6. 刪除已有的文本并粘貼以下內(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)頭。

  1. 打開 hello-world.raml 文件
  2. 點(diǎn)擊 document 按鈕
  3. 尋找標(biāo)簽 API endpoints 你可以看到你定義的 endpoint。HTTP請求顯示在綠色的框中


    get-button.png

已經(jīng)改版,目前找不到這個(gè) get 接口的測試入口。

當(dāng)前頁面的形態(tài):
截屏2021-11-19 下午5.37.53.png

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 四大板塊:

  1. Package Explorer: 幫助導(dǎo)航到文件或者創(chuàng)建工程
  2. Canvas:畫布可以拖拽組件到你的工程,連接它們,創(chuàng)建流程
  3. Mule Palette : 提供一個(gè)標(biāo)準(zhǔn)或自定義資源的快速入口,例如 Connectors 和 modules
  4. 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è)工程

  1. 在 Studio 中,選擇 File > New > Mule Project
  2. 在彈出的對話框中輸入如下信息:
    • project Name : Hello
    • Runtime:如果有選擇的話,選擇 Mule 最新的版本。這個(gè) Mule 的運(yùn)行時(shí)引擎,主要用于 Studio的測試
    • 選擇 From Exchange


      截屏2021-11-19 下午6.02.42.png
  1. 滾到底部勾選驗(yàn)證


    截屏2021-11-19 下午6.05.28.png
  2. Finish

  3. 在 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 請求,我們將在其中做大量配置


截屏2021-11-29 下午8.13.48.png

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

讓我們來驗(yàn)證一下在流程畫布的頂部監(jiān)聽器中設(shè)置的值:


截屏2021-11-29 下午8.16.48.png
  1. 雙擊監(jiān)聽器,來展示它的一般配置項(xiàng)。

  2. 點(diǎn)擊在 configuration name 旁的編輯按鈕,然后驗(yàn)證 host 為 0.0.0.0 端口為 8081

    截屏2021-11-29 下午8.18.44.png

  3. 點(diǎn)擊 Test Connection 然后當(dāng)測試成功之后點(diǎn)擊確認(rèn)按鈕。

    截屏2021-11-29 下午8.19.25.png

  4. 選擇 OK 來關(guān)閉配置(Configuration),會(huì)自動(dòng)展現(xiàn) Global Elements 選項(xiàng)卡

    截屏2021-11-29 下午8.22.14.png

  5. 點(diǎn)擊 Message Flow 來返回原先選項(xiàng)。監(jiān)聽器中一般項(xiàng)配置的值仍應(yīng)顯示。

  6. 驗(yàn)證 Path 值是否設(shè)置為/api/,這個(gè)最佳實(shí)踐可以確保所有端點(diǎn)都采用 base-URI/api/endpoint 形式

    截屏2021-11-29 下午8.25.39.png

  1. 點(diǎn)擊 File > Save All 來保存你的作品
    接下來,我們將創(chuàng)建業(yè)務(wù)邏輯和微我們的 API 配置所需的元素。

STEP3.3 配置 API

通過使用 Studio 提供的腳手架,通過配置 /greeting 端點(diǎn)模塊來完成 API。

  1. 畫布的在 Message Flow 選項(xiàng)卡中,滾到底知道你看到 /greeting 端點(diǎn)模塊

[image:8081F580-B44D-41C8-B68F-61DF21504F0C-1894-00000AD0B35044E2/截屏2021-11-29 下午8.29.34.png]

  1. 右擊 Transform Message 然后刪除


    截屏2021-11-29 下午8.31.38.png
  2. 在 Mule Palette 中 選擇 Favorites 可以看到一系列核心 connector


    截屏2021-11-29 下午8.32.09.png
  3. 點(diǎn)擊 Set Payload 選中,然后把它拖拽到你刪除 Transform Message 的地方,在 Source 標(biāo)簽的右側(cè)


    截屏2021-11-29 下午8.33.33.png
  4. 指定顯示在 hello API 響應(yīng)中發(fā)送數(shù)據(jù)的邏輯:

    1. 點(diǎn)擊你剛剛加入到流程的 Set Payload transformer
    2. 在畫布的地步,在 General 選項(xiàng)卡中,點(diǎn)擊 fx(function)按鈕來取消選中它,這個(gè)教程中,我們對值進(jìn)行硬編碼。


      截屏2021-11-29 下午8.36.50.png
  1. 保存你的作品:File > Save All
  2. 點(diǎn)擊 Configuration XML 在畫布底部,review 剛剛你操作生成的 XML 文件
  3. 點(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)行測試:

  1. 在畫布任意空白處右擊,選擇 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
  1. 測試這個(gè) APP, 打開 REST 客戶端(Advance Rest Client)然后發(fā)起一個(gè) GET 請求


    截屏2021-11-29 下午8.52.04.png
  2. 右擊畫布,選擇 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:

  1. 登陸你 Anypoint platform 賬號https://anypoint.mulesoft.com/login/#/signup

  2. 找到 Management Center 在登錄頁,然后在下方單擊中 Access Management


    截屏2021-11-29 下午8.58.08.png
  3. 點(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]
  4. 點(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è)模版或者樣例給別人使用。

  1. 在 Studio 中的 Package Explorer 右擊 hello 項(xiàng)目
  2. 選擇 Anypoint Platform >Publish to Exchange
    [image:EA5835E5-6D99-4632-8920-B3F1899531C1-1894-00000B3FBF0881DC/截屏2021-11-30 下午3.52.32.png]
  3. 輸入值:
    • 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
截屏2021-11-30 下午4.03.49.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容