【问题标题】:Can Grails app contain REST client and server at the same time?Grails 应用程序可以同时包含 REST 客户端和服务器吗?
【发布时间】:2023-04-04 06:21:01
【问题描述】:

我正在尝试查看 Grails 附带的内置 REST 功能是否允许相同的 Grails 应用程序访问另一台机器上的 RESTful API 端点(有效地使其成为 REST 客户端),以及提供相同的 API端点,以便它可以被其他机器击中(有效地使其成为 REST 服务器)。

例如,假设我有 2 个 Grails 应用程序,即应用程序 A 和应用程序 B。两者都将公开一个 /ping REST 端点,这可能会在从 HTTP GET 命中时返回 JSON“pong”消息。我想知道应用 A 是否可以访问应用 B 的 /ping 端点,同时还提供同名/签名的端点(以便应用 B 也可以访问应用 A 的 /ping)?

最重要的是,更进一步,我想将 RESTful 客户端/服务器功能(用于 /ping)抽象为 Grails 插件,例如 grails-pingrest.zip,然后拥有应用程序 A 和 B 都将此插件作为依赖项导入。这样一来,两者都为客户端和服务器实现共享相同的代码库。

这可能吗?如果是这样,如何以及是否有任何障碍/警告/gotchyas。如果不是,为什么?

【问题讨论】:

  • 完全有可能发生这种情况。使用插件也是正确的方法。
  • 感谢@JoshuaMoore (+1) - 但是,如果同一个 Grails 应用程序正在侦听端口 8080 并服务 /ping 请求以及发出请求,我担心端口干扰或一般通信问题到另一台机器的/ping 端点。对这种类型的干扰有什么想法吗?
  • 完全不会有任何干扰。完全没有理由说明为什么会有。
  • 感谢@JoshuaMoore (+1) - 但是如果应用 A 在应用 B 对应用 A 执行相同操作的同时向应用 B 发送出站 /ping HTTP GET 怎么办?端口上不会有争用吗?
  • 不,因为请求在不同的线程中提供服务。即使您将这两个应用程序托管在同一台服务器上,它们也将由不同的线程提供服务,并且仍然是不同的应用程序。即使他们在内部使用相同的插件。

标签: rest grails rest-client grails-2.3


【解决方案1】:

创建具有此共享功能的插件绝对是正确的。即使同一个应用程序具有相同的端点,调用同一个端点但在不同的应用程序上调用也不会有任何问题。

someplace.com/ping 和 myotherplace.com/ping 不会有任何问题,domain.com/appa/ping 和 domain.com/appb/ping 也不会有任何问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多