MuleSoft 从零开始搭建 API(上)
因为官网的搭建内容篇幅较长,翻译过来花了一点时间,按照现在本文的步骤已经可以完整的搭建并发布 api, 下一篇再讲解怎么消费 Api。有需要的话根据点赞情况考虑直接发布操作视频,帮助大家省去阅读时间。
HOME
背景:
客户和员工需要从智能手表、桌面应用等不同设备之间获取大量的数据和令人愉悦的数据体验。为了提供这样的体验,你的系统必须相互关联,且这些数据需要在不同的系统直接流转(集成)
MuleSoft 通过使用一系列的API将数据从不同的系统中进行集成。让你能够花费较少的时间在 IT 项目上,而把注意力更多的关注在你的核心业务。无论什么时候当你要将业务流程转换成 API,在下一个工程中去实现这个流程将会变得非常简单。API 的粒度是目前被证实最适合代码重用的大小。
api-led-architecture.png
Anypoint 平台通过重用 API 帮助你构建一个结构明确并且可以连接各种应用程序、数据和应用程序网络。统一的 Anypoint 平台可以很容易发现、创造并且管理模块化的 API、组织层级。Anypoint 平台改变通过检索来排查随机和不稳定的代码片段的方式,可以通过“购买”行业内最佳实践生产创建的 API。
探索 Anypoint Exchange
那些你在 MuleSoft 中构建的用于集成应用程序和服务的API 在设计上是可重用的,并且在构建的时候考虑了企业的安全性。你会在 Anypoint Exchange 上找到这些 API 和 连接器、样例、模版。
Exchange 同样提供了 RAML 片段、自定义包、视频、文档链接和其他资源。
设计和构建基于 API 的集成
Anypoint 工作台是一个基于 Eclipse 的 IDE,可以帮助你构建集成。Data Center 是一个基于 Web 的工具,可以帮助你生成 API 规范,这是数据集成的基础。
集成测试工具
在你发布集成之前,你可以通过 MUnit 、Troubleshooting 来进行测试。
集成发布
发布集成到生产环境中
管理集成
一旦你的集成开始在生产中运行,你需要监测它的行为
管理 Anypoint Platform 功能
在开发或者发布之后,你可以对集成进行修改。
从头开始构建一个 API
主要的过程:
- Prerequisites 前提
- Design an API Specification 设置 API 规范
- Develop the API 开发 API
- Add Validation and Error Handling 添加验证和错误处理
- Deploy to CloudHub 部署到 CloudHub
- Operate the API 操作API。
Step1 构建 API 的前提
在你开始 API 构建之前,需要确认你有所要求的工具和权限:
- Anypoint Platform 组织的用户名和密码,如果你没有的话,需要通过 Anypoint Platform 创建一个组织账号:
Anypoint Platform - 下载 Anypoint Studio 7.4.1 或者更高版本。Anypoint Studio 是一个基于 Eclipse 的IDE,拥有完备的构建、发布App功能
下载地址:https://www.mulesoft.com/lp/dl/studio - 测试 REST 请求,通过 Advanced REST Client 或者 Postman 如果你没有的话,可以参考安装 Advanced REST Client:Advanced REST Client
实用技巧:
- 使用两个浏览器窗口,一个用来阅读说明,另一个执行
STEP 2设计 API 规范
设计一个 API,需要评估目的和要求:
- 识别 API 的类型:是一个简单的 API,还是集成的一部分,或者是一个后端系统的一部分。
- 了解数据流:单向、双向、还是更多
- 探索安全要求
在你定义了你集成项目的 scope 和 flow 之后,在 RAML 或者 OAS 上定义一个 API 规范,然后,下一步你将使用这个 API 规范来快速开发一个 API
API 规范和 API
一个 API 就是被发布的接口资源,任何一个人只要有合法权限和合理的请求结构都可以访问。
一个 API 规范说明了 API 的功能和预期行为,同时包括了基础的设计哲学和所支持的数据类型。它包含了文档和 API 定义从而创造出人员和软件都可以阅读的约定。
MuleSoft 提供工具让创建一个 API 规范变得更加简单,你可以分享给你的团队、客户或者普通大众。通过使用 API 规范来缩短项目完成时间
STEP2.1 探索已有的 API 规范
如果你需要在写之前找一个已有的 API 规范,来学习其他跟你有相似情况的人员都是怎么做的。同样的,你可以检查是否自己尚未开发,但是探索发现具有相同目标的 API 规范,适当的重用它。
寻找已经满足需求的 API 规范很容易:
- 在 public Exchange 中找,这是一个由 MuleSoft 托管的门户,其中包含 API 规范、Connector和其它你可以下载或使用的资源。你将在登录页看到一些非常流行的 API 规范、Connectors 和其它资产。
- 在 Exchange 中找你的组织账户。
STEP 2.2 创造你自己的API规范
首先创建一个简单的 Hello world API 样例,返回一个简单的 GET 请求。做这件事,需要使用 API 设计器和一部分 Design Center。
- 打开 API 设计器。Design Center
- 点击新建一个API设计器
- 选择 API Spec
- 输入 hello-world
- 点击创建 SPI Spec
- 删除已有的文本并粘贴以下内容
#%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"
}
这个 API 规范包含:
- 单个的 HTTP 请求,GET
- 单个数据类型, greeting,和单个的属性:todays-greeting 和一个样例值
- 一个 HTTP 成功的 response
- 一个 HTTP 失败的 response
STEP 2.3 测试你的 API 规范
一个 API 规范 hello-world.raml 完成,接下来需要来发送一个请求进行测试。这个mock服务根据你的 API 规范创建一个功能端点,并提供一个简单的 UI来管理身份验证、请求头和相应头。
- 打开 hello-world.raml 文件
- 点击 document 按钮
-
寻找标签 API endpoints 你可以看到你定义的 endpoint。HTTP请求显示在绿色的框中
get-button.png
当前页面的形态: 截屏2021-11-19 下午5.37.53.png已经改版,目前找不到这个 get 接口的测试入口。
STEP 3 开发 API
你已经创建了一个 API 规范,那么接下来就可以开始开发 API
在 Anypoint Platform,开发者将 API 打包部署到 Mule 运行时引擎实例的应用程序中。Mule 是一个运行在 Mule app的轻量级的集成引擎。Mule 的实例嵌入在 Studio 还有你部署 Mule 应用程序和API 的环境中。这些环境被称为 targets。一个 target 是嵌入在 studio ,你可以用来开发和测试的 Mule。另一个 target —— CloudHub 是用来管理 mulesoft 并且基于云的。
这个教程将给你展示如何在 Studio 中首先部署 Mule。当这个 API 完成了你将在 CloudHub 中将其部署到 Mule
Anypoint Platform 四大板块:
- Package Explorer: 帮助导航到文件或者创建工程
- Canvas:画布可以拖拽组件到你的工程,连接它们,创建流程
- Mule Palette : 提供一个标准或自定义资源的快速入口,例如 Connectors 和 modules
- Console: 底部提供设置对话框配置,Mule debug 和其它开发者对话框
STEP3.1 将 Anypoint 平台凭据添加到 Studio
一旦在 Studio 中添加 Anypoint 平台凭据,就可以应用于你创建的所有项目中。
- 打开 studio,点击 Anypoint Studio > Preferences
- 选择 Anypoint Studio > Authentication
- 输入 Anypoint Platform 的用户名和密码
-
Apply and Close
截屏2021-11-19 下午5.58.11.png
STEP3.2 通过导入 API 规范来创建一个新的 Studio 项目
在这个步骤里,我们将创建这个工程
- 在 Studio 中,选择 File > New > Mule Project
- 在弹出的对话框中输入如下信息:
- project Name : Hello
- Runtime:如果有选择的话,选择 Mule 最新的版本。这个 Mule 的运行时引擎,主要用于 Studio的测试
-
选择 From Exchange
截屏2021-11-19 下午6.02.42.png
-
滚到底部勾选验证
截屏2021-11-19 下午6.05.28.png -
Finish
-
在 Studio 中创建一个 XML 文件,hello.xml 然后打开画布 MessageFlow,这上面显示了 API 接口所需的基础的组件
截屏2021-11-19 下午6.09.44.png
如果你滚到画布下方,你可以看到所有已经添加到你 API 规范中的脚手架
- HTTP 监听器已经准备好接收请求
- APIKit 路由器消息路由
- 不同错误条件的错误处理器
- 一个 console, 但是本教程不会使用
- 对端点 /greeting 的 GET 请求,我们将在其中做大量配置
截屏2021-11-29 下午8.13.48.png
注意,这个界面有三个不同的画布视图
- Message Flow:可以轻松拖拽模块、链接器和其它资源,并在它们之间创建关系
- Global Elements:可以轻松指定在多个项目中使用全局元素
- Configuration XML:可以很容易的直接编辑项目的 XML
让我们来验证一下在流程画布的顶部监听器中设置的值:
截屏2021-11-29 下午8.16.48.png
-
双击监听器,来展示它的一般配置项。
-
点击在 configuration name 旁的编辑按钮,然后验证 host 为 0.0.0.0 端口为 8081
截屏2021-11-29 下午8.18.44.png
-
点击 Test Connection 然后当测试成功之后点击确认按钮。
截屏2021-11-29 下午8.19.25.png
-
选择 OK 来关闭配置(Configuration),会自动展现 Global Elements 选项卡
截屏2021-11-29 下午8.22.14.png
-
点击 Message Flow 来返回原先选项。监听器中一般项配置的值仍应显示。
-
验证 Path 值是否设置为/api/,这个最佳实践可以确保所有端点都采用 base-URI/api/endpoint 形式
截屏2021-11-29 下午8.25.39.png
- 点击 File > Save All 来保存你的作品
接下来,我们将创建业务逻辑和微我们的 API 配置所需的元素。
STEP3.3 配置 API
通过使用 Studio 提供的脚手架,通过配置 /greeting 端点模块来完成 API。
- 画布的在 Message Flow 选项卡中,滚到底知道你看到 /greeting 端点模块
[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 -
点击 Set Payload 选中,然后把它拖拽到你删除 Transform Message 的地方,在 Source 标签的右侧
截屏2021-11-29 下午8.33.33.png -
指定显示在 hello API 响应中发送数据的逻辑:
- 点击你刚刚加入到流程的 Set Payload transformer
-
在画布的地步,在 General 选项卡中,点击 fx(function)按钮来取消选中它,这个教程中,我们对值进行硬编码。
截屏2021-11-29 下午8.36.50.png
- 保存你的作品:File > Save All
- 点击 Configuration XML 在画布底部,review 刚刚你操作生成的 XML 文件
- 点击 Message Flow 来进入画布配置的下一步
你已经创建了一个简单的 Mule app 项目,并且可以部署该应用来公开你的 API
跟典型生产的 API 相比,这个 API 是得到简化的
Payload(GET 请求提供的内容)在项目配置中进行了硬编码。在生产就绪的 API 中,Payload 通常来自于其它来源,或者是变量或者 DataWeaver 公式的函数
为了简洁起见,已经跳过将接口和实现(业务逻辑)分离到单独 XML 文件中的最佳实践。
STEP3.4 测试 API
在 Mule 允形式引擎中包含了你的 API 的 Studio 项目,然后使用第三方客户端进行测试:
-
在画布任意空白处右击,选择 Run project
截屏2021-11-29 下午8.45.44.png
console 中会显示状态消息,当显示以下消息时,说明包含你的 API 应用程序已经部署到 Mule 了
截屏2021-11-29 下午8.50.55.png
-
测试这个 APP, 打开 REST 客户端(Advance Rest Client)然后发起一个 GET 请求
截屏2021-11-29 下午8.52.04.png -
右击画布,选择 Stop project 结束服务请求
STEP3.5 在你的组织中创建一个Business Group
在你发布你的 API 到 Exchange 分享给其他人之前,你必须要创建一个 Business Group在你的测试组织里。 Exchange 上的资产必须属于非主Business Group 的 Business Group
如果你并没有现在就打算创建一个 Business Group你可以跳过这一步。
创建 Business Group:
-
登陆你 Anypoint platform 账号https://anypoint.mulesoft.com/login/#/signup
-
找到 Management Center 在登录页,然后在下方单击中 Access Management
截屏2021-11-29 下午8.58.08.png -
点击 Add Business Group 并输入以下值:
截屏2021-11-29 下午8.59.06.png- Business Group name:My Top Business Group
- Owner: 查找你自己的名字,然后选中
- 选择 Owner can create environment 选项
- 其它值保持默认
[image:19DEFFD8-B12D-40F0-9F11-4E44847AB5B8-1894-00000ADBB8B84986/截屏2021-11-29 下午9.02.37.png]
- 点击 Add Business Group 你新的 business Group 就会在“Access Management”列表中的组织名称下方。 截屏2021-11-29 下午9.02.48.png
STEP 3.6 发布 API 到 Exchange 上
发布 API 到 Exchange 然后可以作为一个模版或者样例给别人使用。
- 在 Studio 中的 Package Explorer 右击 hello 项目
- 选择 Anypoint Platform >Publish to Exchange
[image:EA5835E5-6D99-4632-8920-B3F1899531C1-1894-00000B3FBF0881DC/截屏2021-11-30 下午3.52.32.png] - 输入值:
- User :选择你的名字
- business group:选择你创建的 business group 注意,不能使用主的 business group。如果你的证书过期了,点击 Add account 重新登陆。
- Version:默认项
-
选择 project type > example 点击 Finish 按钮。
截屏2021-11-30 下午3.57.10.png