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

为什么Postman调用Spring Boot REST API返回404无法访问?

问题根因

  1. 组件扫描范围不匹配:Spring Boot 的@SpringBootApplication注解默认仅扫描启动类所在包(halloween.contest)及其子包下的Bean,你的控制器类位于独立的controllers包下,不在默认扫描范围内,因此接口未被Spring注册,请求返回404。你给出的启动日志中没有出现/tester接口的映射记录,也佐证了该问题。
  2. 额外的跨域问题:你最初对接Angular遇到的CORS问题,待接口修复后可通过Spring提供的跨域注解快速解决。

解决方案

修复404问题(二选一即可)

  • 方案一:调整包结构
    将Handler控制器类移动到halloween.contest包或其子包下(例如新建halloween.contest.controllers包存放控制器),启动类即可自动扫描到控制器完成接口注册。
  • 方案二:显式指定扫描范围
    不修改现有包结构,在启动类上添加@ComponentScan注解手动指定需要扫描的包路径,修改后启动类代码如下:
    package halloween.contest;
    
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
    import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
    
    @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class,
            SecurityAutoConfiguration.class})
    @ComponentScan(basePackages = {"halloween.contest", "controllers"})
    public class ContestApplication {
        public static void main(String[] args) {
            SpringApplication.run(ContestApplication.class, args);
        }
    }
    

修复CORS问题(对接Angular前配置)

在控制器类上添加@CrossOrigin注解开启跨域支持,开发阶段可临时允许所有来源,生产环境替换为你的Angular应用实际部署地址即可:

package controllers;

import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@CrossOrigin(origins = "*")
public class Handler {
    @PostMapping("/tester/{id}")
    public String tester(@PathVariable(value="id")long userid ){
        System.out.println("in tester");
        System.out.println(userid);
        return "succeeded test";
    }
}

验证方式

修改完成后重启项目,执行curl命令curl --location --request POST 'localhost:8080/tester/69',返回succeeded test则说明接口正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:06:03