从客户端应用程序(ReactJs + NodeJs)向Java Web服务发出请求

时间:2017-07-05 12:13:26

标签: java node.js web-services reactjs express

我有单独的客户端应用程序,它位于ReactJs和NodeJS(Express服务器)中,以及在tomcat中运行的Java应用程序中的Web服务。

我的查询是在进行Web服务调用方面更好的方法。

  1. 一个是从ReactJS进行直接的Web服务调用并获取数据。
  2. 其他人在Express服务器中调用Web服务。来自客户端浏览器的请求将转至Express,Express将拨打所有Web服务。
  3. 我知道直接调用Web服务的一个问题是跨域策略,可以通过在Java服务器中设置配置来处理。

    除了它应该是更好的方法。

2 个答案:

答案 0 :(得分:1)

根据我的经验,最好使用来自UI应用程序的直接调用并避免使用中间服务器。

直接这样做的原因是我们的服务器最终受到了很多基于IP地址的限制,并且所有请求都来自中间服务器(nodeJS服务器),因此终端服务器的DDOS保护必须有一些例外(我们的节点服务器可以在具有动态IP地址的ACS上,因此可能很难管理。

此外,如果您想传递和跟踪最终用户的IP地址,您需要管理节点服务器上的标头(以确保您按原始请求传递它)。

如果来自React应用程序的调用只是在java服务器上设置CORS,那么管理这种情况会更简单。

此外,它更容易在UI应用程序上直接调试它,因此您只会在一个地方观看响应日志。您可以通过其他方式调试节点服务器和UI应用程序。

希望这有点帮助。

答案 1 :(得分:0)

最好的方式IMO是专门为所有Java Web服务在Node js中创建路由器并充当代理。

假设您的网址格式与http://domain/java-ws/api类似,则所有这些请求都将路由到您的Java服务。

如果您有Apache服务器将请求定向到您的节点JS,那么使用代理模块配置url模式代理。

浏览器因某种原因阻止了CORS请求。您可以通过在服务器上设置内容来逃避。