返回

可落地业务建模(4):将模型实现为 RESTful API

闲谈

前言

在上一篇文章中,我们讨论了如何将业务模型落地为代码。在这一篇中,我们将进一步探讨如何将模型实现为 RESTful API,以便于向外界提供服务。RESTful API 是一种基于 HTTP 协议的网络应用程序编程接口,它以资源为中心,使用统一的接口来操作资源。

什么风格的 API 适合作为模型 API

在选择 API 风格之前,我们需要考虑以下几个因素:

  • 业务需求: API 需要支持哪些功能?
  • 技术限制: API 需要运行在什么样的环境中?
  • 安全要求: API 需要提供什么样的安全保障?

对于模型 API,我们通常会选择 RESTful API,因为 RESTful API 具有以下优点:

  • 资源中心: RESTful API 以资源为中心,可以很好地映射业务模型中的实体。
  • 统一接口: RESTful API 使用统一的接口来操作资源,易于理解和使用。
  • 可扩展性: RESTful API 可以很容易地扩展,以支持新的功能和需求。
  • 安全性: RESTful API 可以提供多种安全机制,以保护数据和资源。

行为角度

在将模型映射为 RESTful API 时,我们需要考虑如何将模型中的行为映射为 API 操作。通常,我们可以将模型中的行为映射为以下几种 API 操作:

  • 创建: 创建新的资源。
  • 读取: 读取现有资源。
  • 更新: 更新现有资源。
  • 删除: 删除现有资源。

数据角度

在将模型映射为 RESTful API 时,我们需要考虑如何将模型中的数据映射为 API 资源。通常,我们可以将模型中的数据映射为以下几种 API 资源:

  • 实体: 模型中的实体可以映射为 API 资源。例如,我们可以将产品实体映射为 /products 资源。
  • 集合: 模型中的集合可以映射为 API 资源。例如,我们可以将订单集合映射为 /orders 资源。
  • 属性: 模型中的属性可以映射为 API 资源的属性。例如,我们可以将产品的名称属性映射为 /products/{id}/name 资源。

将模型映射为 RESTful API

通过 URI 表示领域模型

URI 是统一资源标识符,它用于标识互联网上的资源。在 RESTful API 中,URI 用于标识 API 资源。我们可以通过 URI 来表示领域模型中的实体和集合。例如,我们可以使用以下 URI 来表示产品实体:

/products/{id}

其中,{id} 是产品的唯一标识符。

根据 URI 设计 API

我们可以根据 URI 来设计 API 操作。例如,我们可以使用以下 API 操作来操作产品实体:

  • GET /products/{id}: 获取指定产品的信息。
  • POST /products: 创建新产品。
  • PUT /products/{id}: 更新指定产品的信息。
  • DELETE /products/{id}: 删除指定产品。

使用分布式超媒体设计 API 中涉及的资源

分布式超媒体是一种用于在分布式系统中表示资源的规范。在 RESTful API 中,我们可以使用分布式超媒体来设计 API 中涉及的资源。例如,我们可以使用以下分布式超媒体链接来表示产品实体:

<link rel="self" href="/products/{id}">
<link rel="create" href="/products">
<link rel="update" href="/products/{id}">
<link rel="delete" href="/products/{id}">

使 API 适应不同业务需求

在将模型映射为 RESTful API 时,我们需要考虑如何使 API 适应不同的业务需求。例如,我们可以通过以下方式来使 API 适应不同的业务需求:

  • 使用不同的 HTTP 方法: 我们可以使用不同的 HTTP 方法来表示不同的 API 操作。例如,我们可以使用 GET 方法来获取资源信息,使用 POST 方法来创建资源,使用 PUT 方法来更新资源,使用 DELETE 方法来删除资源。
  • 使用不同的数据格式: 我们可以使用不同的数据格式来表示 API 资源。例如,我们可以使用 JSON 格式来表示 API 资源,也可以使用 XML 格式来表示 API 资源。
  • 使用不同的安全机制: 我们可以使用不同的安全机制来保护 API 资源。例如,我们可以使用 OAuth 2.0 来保护 API 资源,也可以使用 JWT 来保护 API 资源。

结语

在这一篇中,我们讨论了如何将领域模型映射为 RESTful API。我们首先讨论了 RESTful API 的优点,然后讨论了如何根据业务需求、技术限制和安全要求来选择合适的 API 风格。接下来,我们讨论了如何将模型中的行为和数据映射为 API 操作和资源。最后,我们讨论了如何使 API 适应不同的业务需求。希望这些内容对您有所帮助。