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

URL正确仍出现HTTP POST 404错误,请求排查接口问题

问题排查与解决方案

核心问题分析

出现POST http://localhost:8080/api/car/create-car 404 (Not Found)错误,说明请求URL在Spring Boot服务中无对应处理端点,结合代码可定位以下几个关键问题点:

1. Java类名大小写错误

Spring Boot控制器的addCars方法参数中,final car car的类名是小写的car,但Java是大小写敏感语言,实体类应为大写开头的Car,这会导致Spring无法识别参数类型,进而无法正确映射请求端点,最终返回404。

修改控制器代码:

@PostMapping(value = "/create-car")
@ResponseBody
@CrossOrigin(origins = "http://localhost:4200")
public void addCars(@RequestBody final Car car) { // 将小写car改为大写Car
    this.carRepository.save(car);
}

2. 控制器未被Spring扫描

确保CarController所在包在Spring Boot启动类的同级或子包下(比如启动类在com.example.demo,控制器需在com.example.demo或com.example.demo.controller这类子包中)。若不在此范围,需在启动类添加@ComponentScan指定扫描路径:

@SpringBootApplication
@ComponentScan(basePackages = "你的控制器所在包路径")
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

3. Angular请求头设置冗余

你在Angular的httpOptions里设置了ACCESS_CONTROL_ALLOW_ORIGIN和ACCESS_CONTROL_ALLOW_CREDENTIALS,这两个是服务器返回给客户端的响应头,客户端发起请求时无需设置,反而可能干扰请求逻辑。建议移除这些冗余头,Angular的HttpClient会配合Spring Boot的@CrossOrigin注解自动处理跨域:

readonly httpOptions = {
    headers: new HttpHeaders({
        "Content-Type": "application/json" // 仅保留必要的请求头,HttpClient默认也会自动添加
    })
};

4. 确认Spring Boot服务端口

检查application.properties或application.yml,确保服务运行在8080端口:

server.port=8080

5. 优化URL拼接(可选)

Angular中的URL拼接可改用模板字符串,提升可读性:

return this.http.post(`${this.usersUrl}/api/car/create-car`, car, this.httpOptions);

验证步骤

  1. 重启Spring Boot服务,确保代码修改生效
  2. 用Postman直接调用POST http://localhost:8080/api/car/create-car,发送符合Car实体结构的JSON数据,验证端点是否正常响应
  3. 再测试Angular端的请求

内容的提问来源于stack exchange,提问作者Zerox

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:17:11