Angular 5 调用Spring Boot接口POST请求出现404错误求助
解决Angular 5 POST请求404(代理未生效)问题
嘿,我来帮你搞定这个404的坑!看起来你的代理配置大概率没生效,或者有几个容易忽略的细节没做到位,咱们一步步排查解决:
1. 先确认代理配置的基础正确性
- 检查文件位置:确保
proxy-config.json和package.json在项目根目录(也就是和src文件夹同级),如果放在子文件夹里,ng serve会找不到这个配置文件,代理自然不会工作。 - 校验JSON格式:你的配置内容看起来没问题,但可以再检查下有没有多余的逗号或者语法错误——JSON格式很严格,哪怕一个小错误都会导致配置失效。
2. 必须重启Angular开发服务器
修改package.json里的start命令后,一定要关掉正在运行的ng serve进程,重新执行npm start。旧的服务进程不会自动加载新的代理配置,这是很多人踩过的坑!
3. 验证Spring Boot服务端点是否正常
先抛开Angular,直接用Postman或者curl测试Spring Boot的接口:
发送POST请求到http://localhost:8080/logging,带上你要提交的JSON body。如果这个请求本身就返回404,那问题出在Spring Boot服务端:
- 检查Controller的
@PostMapping路径是不是/logging(有没有多写前缀比如/api) - 确认Controller类上的
@RequestMapping前缀有没有影响最终路径 - 检查服务是不是真的在8080端口运行
4. 检查Angular的HTTP请求配置
- 确保导入HttpClientModule:Angular 5使用的是
HttpClient(不是旧的Http),你需要在AppModule里导入HttpClientModule并添加到imports数组中。 - 配置正确的请求头:你的
httpOptions必须包含Content-Type: application/json,否则Spring Boot可能无法解析JSON请求体。示例代码:
import { HttpHeaders } from '@angular/common/http'; const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };
5. 查看代理日志确认转发情况
你的代理配置里设置了"logLevel": "info",重启npm start后,终端会输出代理的日志信息。当你点击按钮触发请求时,如果终端出现类似[HPM] POST /logging -> http://localhost:8080的日志,说明代理已经在正常转发请求了——这时候如果还是404,100%是Spring Boot服务端的端点问题。如果没有看到这条日志,说明代理没生效,回到步骤1和2重新检查。
按照这些步骤排查下来,应该就能解决你的404问题啦!
内容的提问来源于stack exchange,提问作者DESH
相关产品推荐
相关产品推荐

