[英]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.