当前位置: 首页 > 知识库问答 >
问题:

在Tomcat上运行的Spring BootAPI和React js

尉迟京
2023-03-14

我正在开发一个React JS应用程序,它从我的Spring boot API中获取所有数据。

一切在本地运行良好。(Spring boot API在端口4000上,React JS在端口3000上,代理值为“http://localhost/4000”)

我设法创建了一个war文件,其中包括我的React js应用程序和Spring boot API。(在端口8080上运行)

我将war文件部署在一个状态为“OK”的本地tomcat服务器上。

Api调用工作得很好(例如http://localhost:8080/webfolder/Api/categories)

但是我的React应用程序无法正确地进行api调用(http://localhost:8080/api/categories,应该是http://localhost:8080/webfolder/api/categories),如下图所示:

<groupId>com.fox</groupId>
<artifactId>events-platform</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>

<name>events-platform</name>
<description>Events-platform built using React JS and Spring boot</description>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.0.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
        <version>2.3.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-rest</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
        <version>2.3.4.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt</artifactId>
        <version>0.9.0</version>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.2.8.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.8.5</version><!--$NO-MVN-MAN-VER$-->
    </dependency>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>7.0</version>
    </dependency>
    <dependency>
        <groupId>jakarta.validation</groupId>
        <artifactId>jakarta.validation-api</artifactId>
        <version>2.0.2</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-agroal</artifactId>
        <version>5.4.21.Final</version>
        <type>pom</type>
    </dependency>

    <dependency>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>3.0.0</version>
        <type>maven-plugin</type>
    </dependency>


</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>com.github.eirslett</groupId>
            <artifactId>frontend-maven-plugin</artifactId>
            <version>1.6</version>
            <configuration>
                <workingDirectory>${project.basedir}/src/main/webapp/front-end</workingDirectory>
                <installDirectory>target</installDirectory>
            </configuration>
            <executions>
                <execution>
                    <id>install node and npm</id>
                    <goals>
                        <goal>install-node-and-npm</goal>
                    </goals>
                    <configuration>
                        <nodeVersion>v14.5.0</nodeVersion>
                        <npmVersion>6.14.5</npmVersion>
                    </configuration>
                </execution>
                <execution>
                    <id>npm install</id>
                    <goals>
                        <goal>npm</goal>
                    </goals>
                    <configuration>
                        <arguments>install</arguments>
                    </configuration>
                </execution>
                <execution>
                    <id>npm run build</id>
                    <goals>
                        <goal>npm</goal>
                    </goals>
                    <configuration>
                        <arguments>run build</arguments>
                    </configuration>
                </execution>
            </executions>
        </plugin>

        <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
                <execution>
                    <phase>generate-resources</phase>
                    <configuration>
                        <target>
                            <copy todir="${project.build.directory}/classes/public">
                                <fileset dir="${project.basedir}/src/main/webapp/front-end/build"/>
                            </copy>
                        </target>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

我在前端的API调用的实例:

共有1个答案

章子航
2023-03-14

从测试中显示的情况来看,API使用/webfolder上下文,而ReactJS客户机使用根上下文/

您可以将客户机改为使用/webfolder上下文,或者将API配置为使用根上下文/

更新2020-10-08-12:20

const API_ROOT = '/webfolder/api'

useEffect(() => {
  axios.get(`${API_ROOT}/spaces`).then(...).catch(...)
  axios.get(`${API_ROOT}/categories`).then(...).catch(...)
})
 类似资料:
  • 我试图在Tomcat上通过eclipse运行一个项目文件。现在服务器启动了,但是当我试图访问服务器时(使用localhost:8080),我得到了一个404错误。查看Eclipse中的服务器控制台,我看到了一些奇怪的消息,希望你们中的一个能够理解它们。信息如下。谢了! 信息:在java.library.path:C:\program files\java\jre6\bin;C:\windows\s

  • 尽管CAS服务器在Tomcat下工作得很好,但我有一些问题要使它在WebLogic12c下工作。在Weblogic上部署之前,我遵循以下指南:https://github.com/gentics/gentics-sso-cas/wiki/oracle-weblogic-configuration在webcontent/web-inf/with content中添加文件Weblogic.xml:

  • 关于我以前的问题,我在Linux上运行企业级web应用程序时遇到了一些问题。在投资一台真正的登台机之前,我想我应该在Raspbery Pi上试一试,但现在,我们在一台真正的Debian计算机上运行该应用程序。 这个问题和我前面的问题一样。 起初,我认为这更像是tomcat的问题,但现在,我认为这是一个 <罢工> 覆盆子皮 Linux问题。 我将Spring bean定义为; 它给了我,说明没有定义

  • 我正在尝试让Appfuse+Tomcat+jRebel工作。 我看着问题的标题,@Tech Junkie和@CPU100确实有最好的答案,但不是针对我遇到的场景。(我想知道运行的是我安装的tomcat还是“项目盗用的”tomcat)

  • 我正在尝试让Appfuse+tomcat+jRebel工作。 Appfuse默认使用Cargo下载tomcat(ver.7.0.33)并将应用程序部署到其中。我希望使用已经安装的tomcat(ver.7.0.27)而不是下载的。我根据appfuse常见问题进行了更改。 使用进行部署后,我如何知道实际运行的tomcat确实是7.0.27? 我曾经键入一个错误的URL(例如localhost:8080

  • 我正在尝试在Centos tomcat7上托管一个网站,如果我在端口80上运行tomcat7,一切正常,即74.208.164.45,但如果我想使用https://74.208.164.45/,它不起作用,但如果我这样尝试https://74.208.164.45:8443/添加密钥库之后,它就可以正常工作了。 所以,我需要一种在80和https上运行tomcat的方法,即https://74.2