如何在 REST API 中将多个 API 调用合并为一个调用

问题描述 投票:0回答:2

例如,如果我有一个 API 调用

http://localhost:3006/[email protected]&password=xxxxxx&count=4&location=US
和另一个 API 调用
http://localhost:3006/[email protected]&password=xxxxxx&count=2&usernames=abc,xyz
。 那么,我可以通过像
http://localhost:3006/[email protected]&password=xxxxxx&count=4&location=US/cancel-request?count=2&usernames=abc,xyz
这样的操作将这两个调用合并为一个。如果是,那么我如何在 Node.js 中使用 express 处理这个问题。

node.js api rest express http
2个回答
1
投票

我建议将这些操作设为 POST 而不是 GET。然后,您可以拥有一个用于多项操作的 URL,并且您可以在正文中包含一个包含一系列操作及其参数的 JSON 有效负载:

http://localhost:3006/multi-operation

使用解析为这个的 JSON 有效负载:

[
   {
       operation: "send-message",
       email: "[email protected]",
       password: "xxxxx",
       count: 4,
       location: "US"
   },
   {
       operation: "cancel-request",
       email: "[email protected]",
       password: "xxxxx",
       count: 2,
       usernames: ["abc","xyz"]
   }
]

这也只会在请求正文中发送敏感信息,例如密码,这通常被认为比将它们放在 URL 中更安全(它们可能会被各种基础设施记录在 URL 中)。

注意:在 REST API 设计中,GET 请求不应该有“副作用”。它应该检索一些资源。调用它 0 次、1 次或 10 次应该对服务器/世界产生相同的效果。因此,独立于在一个 API 调用中指定多个操作的愿望,这些操作无论如何都不应该是 GET 操作,因为它们都有副作用(它们会导致发生一些变化)。因此,这些应该很可能是 POST 操作。有很多关于何时在 REST API 中使用 GET、POST、PUT、PATCH 等的好文章。如果你对此感到困惑,你可以从这些文章开始,或者通过搜索找到许多其他文章:

https://restfulapi.net/http-methods/

https://www.restapitutorial.com/lessons/httpmethods.html


0
投票

这篇文章有点旧,但我刚刚在一个项目中遇到了这个问题,并找到了一个开源工具来帮助促进这个叫做WunderGraph

WG 解决方案是它采用 OpenAPI 规范、GraphQL 或 DB 源,并允许您将其公开为 JSON RPC 调用。您还可以将 JSON RPC 操作公开给对上游目标的 2 个或更多调用。

我不确定是否有人仍在尝试解决这个问题,但我认为值得评论对反复出现的问题的更新响应。

如果你想将它连接到 NodeJS / Express 中,你可以使用生成的 TypeScript SDK 来调用操作。

无论如何,希望它能帮助将来解决这个问题的人!

https://github.com/wundergraph/wundergraph

https://wundergraph.com

© www.soinside.com 2019 - 2024. All rights reserved.