API 开发中的部分更新、检索与自定义方法
1. 部分更新与检索
1.1 最终 API 定义
在标准的获取请求和更新请求中,我们可以使用新的 FieldMask
类型(等同于字符串数组)来定义两个新字段。以下是相关的代码示例:
abstract class ChatRoomApi {
@get("/{id=chatRooms/*}")
GetChatRoom(req: GetChatRoomRequest): ChatRoom;
@patch("/{resource.id=chatRooms/*}")
UpdateChatRoom(req: UpdateChatRoomRequest): ChatRoom;
}
type FieldMask = string[];
interface GetChatRoomRequest {
id: string;
fieldMask: FieldMask;
}
interface UpdateChatRoomRequest {
resource: ChatRoom;
fieldMask: FieldMask;
}
1.2 权衡
使用字段掩码进行部分更新和检索功能强大,但目标有限,主要是为了减少不必要的数据传输,并允许对 API 资源进行细粒度修改。不过,不能将字段掩码和部分检索视为类似 SQL 的查询工具。当 API 有大量相关数据,且需要根据不同资源之间的关系检索特定数据时,字段掩码可能不是最佳选择,GraphQL 会更合适。