繁体   English   中英

部署在 AWS 上的 EC2 实例上时,REST API 返回 http 状态 404

[英]REST API returning http status 404 when deployed on EC2 instance on AWS

我有一个简单的 spring boot 应用程序,它只有 2 个 rest 控制器,我正在为此导出 war。 我正在 AWS 上的 EC2 实例上使用 tomcat 管理器部署相同的战争,但不幸的是,我在尝试访问 API 时收到 http 状态 404。

我试图点击的网址是 -

[AWS 共享的公共 IP]:[运行 tomcat 的端口号:8080]/[上下文路由,这是我的 war 文件的名称]/[我映射的 urls]

[publicIP]:8080/aws-0.0.1-SNAPSHOT/登录/代码

我的控制器类

@RestController
@RequestMapping("/login")
public class TestController {

    @GetMapping("code")
    public String returnCode() {
        return "returning code";
    }

    @GetMapping("received-code")
    public String returnReceivedCode(@RequestParam String code) {
        return code;
    }

}

我的 pom.xml

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.0.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.test</groupId>
    <artifactId>aws</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>aws</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>17</java.version>
    </properties>

我也尝试使用 java 版本 8,我的 EC2 实例上的 tomcat 版本是 9 (apache-tomcat-9.0.70)

我还尝试获取 tomcat 共享的一个示例 war 应用程序以用于测试目的 - https://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/

但令人惊讶的是,这工作正常,这告诉我我的 tomcat 和 java 安装没有任何问题。

任何帮助,将不胜感激。

正如上面@khmarbaise 所强调的,我使用的是 spring boot 3.0.0,但我在我的 EC2 实例上安装了 java 8,而 spring boot 3.0.0 需要 java 版本 17+,这就是我在访问 API 时得到 404 的原因。

将我的 spring boot 版本降级到 2.7.6 后,我能够从 API 获得相应的响应。

此外,正如其他关于使用“/”的评论所提到的,省略斜杠不是问题,因为斜杠是可选参数。

谢谢

你必须在“代码”之前添加一个“/”

@GetMapping("/code")

你忘了在控制器方法中为你的路径添加 / 因为你使用路径:

/logincode

代替/login/code

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM