gpt4 book ai didi

api - 设计一个接受大量数据作为输入的 REST API 端点

转载 作者:行者123 更新时间:2023-12-04 14:09:30 25 4
gpt4 key购买 nike

假设我们正在设计 REST API。我们有一些实体,我们称它为 foo

因此返回根据某些谓词过滤的 foo 实体列表的端点如下所示:

GET /foos?filtering-parameters-here

问题是 filtering-parameters 负载的大小可能非常大。在某些情况下,它可能很容易超过 6-7kb。

一些客户端(浏览器)正在修剪 URL,以防它达到那个大小。

“显而易见”的解决方案是将其更改为 POST 并在正文中发送参数。但它会使端点在语义上不干净。

那么正确的 RESTful 方式是什么?

最佳答案

我听说过在这种情况下使用 POST 的建议,但不仅仅是接受参数。

相反,POST 请求以复杂的过滤数据作为消息正文被触发,这可以预见创建一个资源;让我们称之为搜索:

POST /search HTTP/1.1

响应通过 Location 标识结果集:

Location: http://example.com/search/798342

可以针对该位置发出后续的 GET 请求,返回结果集。当结果集可能需要一些时间生成时(这可能是给定复杂过滤规则的情况)并且与 HTTP 的期望保持一致,这特别有效。 p>

GET /search/798342 HTTP/1.1

如果搜索结果没有准备好,产生一个404

与其他任何事物一样,搜索可以/应该表示为资源。一个额外的好处是缓存。如果缓存复杂操作的结果,缓存生命周期可以从搜索结果集资源中获取。

关于api - 设计一个接受大量数据作为输入的 REST API 端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23554948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com