【问题标题】:Connect grails front with java REST backend将 grails 前端与 java REST 后端连接起来
【发布时间】:2012-02-19 12:37:00
【问题描述】:

我有一个带有 REST 实现的 Java 后端项目,它是一个 warfile, 我也有 Grails 作为前端,我可以使用 tomcat 自己运行这两个独立的项目,

但是我如何配置 grails 部分,以便我可以在其中使用 java 后端 RESTfull webbservice,

我是否必须从 java 后端制作一个 war 文件并将其导入 grails 前端?制作一个jarfile?

如果是这样,我该怎么做?或者有没有其他方法可以让它发挥作用。

【问题讨论】:

  • 你说你已经有了'grails 作为前端'并且你'可以运行这些项目'。那么,如果一切都按照您所说的那样工作,那么您实际上想要达到什么目标?
  • 您的问题是关于如何让 grails Web 应用程序与另一个提供 REST 接口的 Web 应用程序通信,或者如何在您的 cmets 回答的同时从两个不同的 IDE 运行两个 tomcat 实例似乎表明?如果是后者,也许会开始一个新的问题。我相信两者都已经在直接答案和 cmets 中得到了回答。

标签: java grails frontend backend


【解决方案1】:

REST 提供了一种无需显式链接即可访问服务的方法。

RESTful 应用程序使用 HTTP 请求来发布数据(创建 = HTTP-POST、更新 = HTTP-PUT、读取 = HTTP-GET、删除 = HTTP-DELETE

如果您使用 Tomcat 运行 Java 后端,您可以从浏览器访问它吗? IE。 http://localhost:8080/backendservice/resource/1 (这将是一个 GET 请求。)

您需要从您的应用程序发出 http 请求。

【讨论】:

  • 是的,我可以从浏览器访问它,但是,我的 grails 应用程序将如何在 Eclipse 中与我的 RESTful 应用程序通信?这两个应用程序都需要tomcat。当 grails 应用程序调用它时,我应该如何使 RESTapp 工作。我如何设置和配置具有依赖关系的 grails?还是罐子? Restfull 应用程序是战争。
  • 我认为您需要了解如何使用 REST。 javaworld.com/community/node/2477(虽然有点老了)基本上,你需要为你想要的资源构造一个http请求——即读取数据。然后你发出那个请求,然后读回响应——它可能是 json 或 xml。然后你解析它以获得你想要的信息
  • 是的,也许,我知道 RESTapp 正在工作,但是当我尝试从 STS 与它通信时,我得到:错误服务器无法为端口 8080 启动:地址已在使用中,我想我有在 Eclipse 中启动服务器以使 REST 应用程序正常工作?
  • 后端在哪个端口上运行,您的 grails 应用在哪个端口上运行?从哪里运行服务应该无关紧要......
  • 我在默认端口 8080 上为 grails 应用程序使用一个 IDE STS,在同一端口上为 REST 应用程序使用 IDE eclipse,所以它不起作用吗?是否可以为 Eclipse 使用 grail 插件,这样您就只有一个 IDE 或者您可以使用两个,最佳实践是什么?
【解决方案2】:

很大程度上取决于您对这 2 个应用的控制程度以及它们的设计方式。

首选是在您的 grails 应用程序中创建一个服务类,该服务类使用 REST 与其他应用程序通信。你可以使用 Spring 的 RestTemplate 之类的东西。然后将数据传递到控制器层并进入您的前端 JSP/GSP。

如果 RESTful 应用程序的设计方式使得 RESTful 层可以与业务层分离,那么您可以将业务层的 jar 作为依赖项添加到 grails 应用程序中。在这种情况下,您只需更改 Service 类以与 jar 对话而不是 RESTful 服务。

另一种选择是让浏览器直接使用 JavaScript 与 REST 层对话。这应该可以工作,因为它们来自同一台服务器。

【讨论】:

  • RESTfull 应用程序与 buisnesslayer 分离只是在 pom.xml 中获得了对它的依赖关系,我在 grails 应用程序中创建了一个服务类,它应该与 Eclipse 中的 RESTfull 应用程序通信,但两个应用程序需要 tomcat 并且当我运行 grails 应用程序时它将无法工作,因为 tomcat 已准备好由 RESTfull 应用程序使用,反之亦然,两个应用程序独立工作,但一起工作是个问题。在 Web 浏览器 localhost:8080/backendservice/user 中工作,用于 REST 应用程序的 POST。
  • 您的问题是与开发时的部署有关,还是与最终应用程序部署的设计问题有关?
  • 我认为这是为了最终的应用程序部署,在 STS 中,调用只是一个常规的客户端调用和响应,就像这样 Client c = Client.create() WebResource webR=c。资源(Uri)客户端响应响应=c.resource(Uri).type(MediaType.APPLICATION_JSON_TYPE)。 post(ClientResponse.class,user.toString()) int status = response.getStatus()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-17
  • 2019-11-13
  • 2020-01-28
相关资源
最近更新 更多