如何从Angular中调用Eclipse本地部署的Spring应用?
解决步骤
1. 确认Tomcat部署的上下文根路径
Eclipse中Tomcat部署的项目默认上下文根会携带SNAPSHOT版本号,可按以下步骤核对修改:
- 打开Eclipse的「Servers」视图,双击当前运行的Tomcat实例打开配置页
- 切换到Modules标签,找到你的Spring项目对应行,「Path」列的值就是当前生效的上下文根
- 如果你希望使用短路径,点击「Edit」按钮,将Path修改为
/gmao保存即可
- 如果你希望使用短路径,点击「Edit」按钮,将Path修改为
- 重启Tomcat生效
2. 核对Spring项目的接口映射规则
完整的接口访问路径结构为:http://<host>:<port>/<上下文根>/<Controller类映射路径>/<方法映射路径>
- 检查Controller类上的
@RequestMapping注解配置,比如类上标注@RequestMapping("/api")的话,所有该类下的接口都需要在上下文根后加/api前缀 - 如果是Spring Boot项目,核对
application.properties/application.yml中的server.servlet.context-path配置,该配置优先级高于Eclipse的Tomcat模块配置
3. 排查跨域拦截问题
Angular本地开发默认运行在http://localhost:4200,和Tomcat的8083端口不同源,浏览器同源策略会直接拦截请求,该问题容易被误认为是接口地址错误:
- 临时调试可在对应Controller类上添加
@CrossOrigin(origins = "http://localhost:4200")注解放行跨域请求 - 生产环境建议配置全局CORS规则或者通过网关统一处理跨域
4. 先单独验证接口可用性
不要直接在Angular侧调试,先通过浏览器或者Postman直接访问拼接好的接口地址,根据返回状态码定位问题:
- 返回404:地址拼接错误,重新核对端口、上下文根、接口映射路径
- 返回跨域相关报错:按步骤3处理跨域
- 返回500:Spring接口内部逻辑报错,排查服务端日志
内容的提问来源于stack exchange,提问作者pheromix
相关产品推荐
相关产品推荐

