具有更多请求的 API 开发详细端点

Posted

技术标签:

【中文标题】具有更多请求的 API 开发详细端点【英文标题】:API Development detailed endpoints with more requests 【发布时间】:2019-06-27 14:10:20 【问题描述】:

我正在使用 express 和 node 来非常轻松地创建端点。 我有一个名为 /users/:uid/upload 的端点,带有一个 POST 请求。 我希望它处理大量数据,但是发送带有大约 3.5MB 的 JSON 的请求会导致 412 错误(有效负载太大)。

My Payload 包含一系列(音乐)艺术家及其专辑,所以artist/:artistid/albums/:albumid

所以我想到了替代方案:

    替代方案:具有更多请求的详细端点

所以我会创建以下端点:

POST /artists/:artistid/data
POST /artists/:artistid/albums/:albumid/

这会使大负载变小,但我会让number_of_artists * number_of_albums_per_artist 请求彼此相对接近

    替代方案:将 JSON 作为文件上传

我需要将我的数据保存到文件中,然后上传,然后解析文件并将其存储在某处。我不希望使用此选项,因为文件需要经常更新。

有没有我遗漏的替代方案,您会推荐替代方案 1 吗?

谢谢

【问题讨论】:

【参考方案1】:

对于您目前的情况,您可以增加大小限制。

安装并要求body-parser:

const bodyParser = require('body-parser')

在声明端点之前添加:

app.use(bodyParser.json( limit: '10mb'))


虽然我会推荐对详细端点的多个请求,因为如果一个失败,你只能重试那个特定的。整个操作不会那样失败。因此,如果您有时间对此进行投资,最好的方法是使用多个端点。

【讨论】:

所以总的来说,提出如此巨大的请求并不是一个坏习惯? 不理想。 3.5MB 对于单个请求来说很大,但数据量也不是很大; 我正在寻找处理此类大型请求的最佳方法,而不是增加限制(这是一个不错的选择)。因此,您会建议对详细端点的多个请求设置更高的限制? 不,我建议将多个请求发送到详细的端点,因为如果一个失败,您只能重试那个特定的端点。整个操作不会那样失败。因此,如果您有时间对此进行投资,最好的方法是使用多个端点。使用多个详细的端点有更多好处,但很难在评论中对其进行扩展(堆栈请求的内存使用率保持较低,更多“ReSTful”API 等......)。 感谢您的意见,多个请求听起来不错 :) 谢谢

以上是关于具有更多请求的 API 开发详细端点的主要内容,如果未能解决你的问题,请参考以下文章

如何从具有不同参数的单个端点获得多个响应?

带有更多艺术家详细信息的 Spotify API 跟踪请求

REST API 响应取决于发出请求的人

go中一次处理许多GET请求

如何使用请求正文调用 API 端点?

导航到显示页面时强制 GET_ONE 请求