【发布时间】: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 发送出站
/pingHTTP GET 怎么办?端口上不会有争用吗? -
不,因为请求在不同的线程中提供服务。即使您将这两个应用程序托管在同一台服务器上,它们也将由不同的线程提供服务,并且仍然是不同的应用程序。即使他们在内部使用相同的插件。
标签: rest grails rest-client grails-2.3