You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署于AWS的REST服务无法运行问题求助

排查AWS上REST服务无法正常工作的问题

看起来你在AWS上部署的Spring Boot REST服务和Angular前端交互时遇到了问题,结合你提供的代码,我整理了几个最常见的排查方向,你可以一步步来定位:

1. 优先排查跨域(CORS)问题

如果你的Angular前端和AWS后端不在同一个域名/端口下,浏览器的同源策略会直接拦截这个请求——这是前后端分离场景里最常见的坑。你可以打开浏览器开发者工具(F12)的Network标签,看请求的状态,如果显示CORS error,那就是这个问题。

解决方法很简单,给你的Spring Boot Controller加上跨域注解:

@RestController
@CrossOrigin(origins = "*") // 开发环境可以临时用*,生产环境记得改成你的前端域名,比如"https://your-frontend-domain.com"
public class ProjectController {
    @RequestMapping(method = RequestMethod.GET, value = "/getProjects")
    public ArrayList<Project> getProjects() {
        ArrayList<Project> projectList = new ArrayList<Project>();
        ProjectDao obj = new ProjectDao();
        projectList = obj.getProjects();
        return projectList;
    }
}

2. 检查Angular的请求URL是否正确

你现在用的是相对路径/getProjects,如果前端不是和后端部署在同一个服务器/容器下,这个路径会指向前端所在的服务器,而不是AWS上的后端服务。

解决方法:把URL改成后端服务的完整地址,比如:

$http({
    method: "GET",
    url: "http://你的AWS EC2公网IP:8080/getProjects" // 替换成你实际的服务地址和端口,如果用了ELB就填ELB的域名
})
.then(function success(response) {
    // 处理返回的项目列表
}, function error(response) {
    console.log("请求失败详情:", response); // 打印错误信息,方便排查
});

3. 先验证后端服务本身是否可访问

别先急着看前端,先用Postman或者curl直接调用后端接口,确认服务本身是正常的:

curl http://你的AWS EC2公网IP:8080/getProjects

如果这个请求也失败,那问题出在AWS的部署配置或者后端代码本身:

  • 检查EC2的安全组:有没有开放后端服务的端口(比如8080),允许你的IP或者必要的来源访问(生产环境别随便开0.0.0.0/0)。
  • 查看后端服务日志:登录EC2或者用AWS的日志工具,看服务启动时有没有报错,比如数据库连接失败、ProjectDao里的代码抛出异常。
  • 如果用了Elastic Beanstalk部署,检查环境的健康状态,看有没有部署失败的提示。

4. 检查后端代码的依赖注入问题

看你的Controller代码,直接new ProjectDao()可能会有坑——如果ProjectDao里用到了Spring的依赖(比如JdbcTemplate、@Autowired的Bean),手动new的话这些依赖不会被Spring注入,会导致NullPointerException,接口返回500错误。

正确的做法是让Spring注入ProjectDao,而不是自己new:

@RestController
@CrossOrigin(origins = "*")
public class ProjectController {

    private final ProjectDao projectDao;

    // 构造方法注入(Spring官方推荐的方式)
    public ProjectController(ProjectDao projectDao) {
        this.projectDao = projectDao;
    }

    @RequestMapping(method = RequestMethod.GET, value = "/getProjects")
    public ArrayList<Project> getProjects() {
        return projectDao.getProjects();
    }
}

同时记得给ProjectDao加上@Repository注解,让Spring能扫描到这个Bean:

@Repository
public class ProjectDao {
    // 你的getProjects()实现代码
}

按照上面的步骤一步步排查,应该能快速定位到问题所在。

内容的提问来源于stack exchange,提问作者Dil Shad Roshan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:14:05