具有更多请求的 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 开发详细端点的主要内容,如果未能解决你的问题,请参考以下文章