我的 REST API 有时需要返回413 'Payload too large'响应。
作为上下文:我将 AWS 与 API Gateway 和 Lambda 一起使用。Lambda 的最大有效负载为 6Mb。有时 - 不到 0.1% 的请求 - 负载大于 6Mb,我的 API 返回 413 状态。
我处理这个问题的方法是提供一种从 API 请求数据的替代方法 - 作为一个 URL,该 URL 链接到存储为 S3 上的 json 文件的数据。S3 位于具有生命周期规则的存储桶中,该规则会在短时间内自动删除文件。
这工作正常,但具有不令人满意的特性,即大负载请求会导致客户端进行 3 个单独的调用:
- 向 API 发出标准请求并接收 413 响应
- 向 API 发出第二次请求以获取存储在 S3 URL 中的数据。
asURL=true
为此,我在 GET 请求中使用了一个参数。 - 发出第三个请求以从 S3 存储桶中检索数据
我正在考虑的另一种方法是在 413 响应中嵌入 S3 URL。例如,将其嵌入到自定义标头中。这将避免第二次调用的需要。
我还可以更改方法,使每个请求都作为 S3 URL 返回,但随后 99.9% 的请求将不必要地进行 2 次调用,而不仅仅是 1 次。
这里是否有最佳实践,或者同样需要避免的不良实践?