【问题标题】:Blocking a REST API response until another API is called阻止 REST API 响应,直到调用另一个 API
【发布时间】:2018-06-04 22:06:02
【问题描述】:

我有以下场景:

一个应用程序中有两个 API 调用:api1api2

api1 被多个用户多次调用。我想阻止api1 调用的所有响应,直到调用api2api2 将使用一个参数调用,该参数建议“释放”特定api1 调用的响应。因此,无论何时调用api2,都会响应一个特定的api1 调用,该调用一直被阻止(根据api2 调用中传递的参数,可以有多个api1 版本)。

我想在 grails 中实现它。我有点空白如何实现这一点。有什么想法吗?

如果您知道任何其他可用于实现此功能的语言或框架,请分享。

【问题讨论】:

    标签: rest api grails3


    【解决方案1】:

    我想到的一个解决方案是在 api1 调用中使用互斥体并将其释放到 api2 中。您可能需要考虑api1 的超时时间。

    编辑

    好吧,您可以拥有一个互斥体的字典/映射,其中每个调用都有一个各自的互斥体。当客户端调用api1 时,服务器会生成一个互斥体并将其添加到字典中,并尝试锁定互斥体(默认情况下是锁定的)。之后在api2 上,您只需提供您在字典中使用的 id 即可解锁互斥锁。

    【讨论】:

    • 我也想到了。但是我不知道使用互斥锁的确切场景的实际实现。超时不会成为问题,因为我会故意在调用应用程序(将调用 API 的消费者应用程序)中将其设置为足够高的值。
    • 你可以有一个互斥锁的字典/映射,其中每个调用都有一个各自的互斥锁。当客户端调用 api1 时,它会生成一个互斥锁并将其添加到字典中,它还会尝试解锁互斥锁(默认锁定)。之后在 api2 上,您只需要提供您在字典中使用的 id 即可解锁互斥锁。
    • 理论上看起来不错。让我实现它,看看它的去向。
    • 我实现了它并且它有效。我接受你的回答,但我也会用示例代码发布我自己的答案。您应该通过在答案中添加上述评论来更新您的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多