REST api 处理嵌入文档的最佳实践

问题描述 投票:0回答:1

我的后端管理一个实体(EntityA),其中包含第二个实体,该实体存储为嵌入式文档(EntityB)。

设计用于使用 EntityA 的 REST API 的最佳方法是什么?

让我们有一个像这样的端点

/api/entities-a/:id

返回 EntityA 类型的资源。

后端返回的 JSON(例如)中应该包含什么?嵌入的 EntityB 或其 id(超链接)?

rest nosql api-design
1个回答
0
投票

首先,就 API 设计而言,如何将事物存储在持久层中不应该成为 API 设计的问题。您的数据模型不是您的对象模型,您的对象模型也不是您的 API 模型。

因此,为了概括这个问题,您有一些实体与另一个实体密切相关 - 这种关系的强度可以通过您将一个实体存储在另一个实体中的事实来表明。

如何通过 API 呈现这一点实际上取决于您的 API 客户端。您的客户是否一直对两个实体感兴趣?如果是这样,为什么当客户最好将其视为一个实体时,为什么将其建模为两个实体呢?无论哪个层将您的数据转换为 API 响应,都可以将两个实体转换为单个 API 资源表示形式。 您的客户有时只关心相关实体

某些

吗?如果是这样,则将其建模为具有指向相关实体的link的单个实体。这允许客户端根据需要获取其他数据。 如果您使用 HAL 等简单的超媒体格式,您还可以利用

_embedded

数据来提供

both
实体(当这对客户端有利时)。但如果它总是对客户端有利,只需以这种方式建模你的 API,无论数据如何持久化,并为客户端提供一个单一的实体。

© www.soinside.com 2019 - 2024. All rights reserved.