tommwq.work/aip

AIP-4223

· [tommwq@126.com]

客户端负载验证

客户端负载验证是指在执行网络调用之前检查请求负载是否存在任何配置错误(例如缺少必填字段、尝试更新不可变字段)的做法。通常,文档会传达服务对每个请求字段的期望,包括对存在性或格式的任何要求。AIP-203中定义的`google.api.field_behavior`注释是服务用于记录与特定请求字段相关的行为的机器可读格式。

指南

客户端库**不得**基于`google.api.field_behavior`注释实现客户端负载验证,除非是为了防止本地故障

这样做的原因是,`google.api.field_behavior`注释主要是_文档_的机器可读形式,**而不是**负载验证的配置。该注释传达了服务_已经_如何处理该字段,并暗示了服务自身的负载验证或期望。

诚然,依赖服务实现负载验证意味着客户端有时会进行注定会导致错误的网络调用。此外,用户随后依赖服务提供可操作的错误,而客户端本可以提供符合语言习惯的本地化错误。然而,健壮的服务器端负载验证意味着_所有类型_的客户端(第一方、第三方、`curl`等)都将受益于**相同的**验证,并且当字段行为发生变化时,服务和客户端之间没有滞后。

本地故障

客户端库**可以**基于`google.api.field_behavior`注释实现客户端负载验证,但仅限于防止本地故障,例如客户端库代码本身的崩溃。