You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

调用REST接口时出现“No message available”错误求助

解决REST API 404 Not Found问题的排查步骤

先看你遇到的核心问题:虽然在WebSecurity里给/createorganization配置了permitAll(),但还是返回404,这大概率不是权限配置的问题,而是接口本身无法被Spring MVC正确映射,我帮你梳理几个关键排查点:

1. 修复API方法签名的语法错误

你的createOrganization方法参数里有明显的语法错误:

public @ResponseBody CustomResponse createOrganization(String orgName, String, String email, String password) throws Exception {....

这里的String, String email是无效语法——多了一个多余的String,,这会导致Spring无法识别这个合法的请求处理方法,自然返回404。把它修正为:

public @ResponseBody CustomResponse createOrganization(String orgName, String email, String password) throws Exception {....

2. 检查控制器类的路径前缀

如果你的控制器类上添加了@RequestMapping注解(比如@RequestMapping("/api")),那实际的API路径会是/api/createorganization,而不是你访问的根路径/createorganization。你需要确认控制器类的注解:

// 示例:如果有这样的前缀,访问路径要加上/api
@RestController
@RequestMapping("/api")
public class YourController {
    @GetMapping(path = "/createorganization")
    public @ResponseBody CustomResponse createOrganization(...) {....}
}

这种情况下,你需要访问http://localhost:8080/api/createorganization?orgName=abcd&email=john@gmail.com&password=complex才能命中接口。

3. 确认Spring Boot扫描到了控制器类

如果你的控制器类不在Spring Boot主应用类的同级或下级包下,Spring会无法自动扫描到这个控制器,导致接口无法映射。你可以:

  • 把控制器类移到主应用类的包或子包下
  • 或者在主应用类上添加@ComponentScan指定控制器所在的包:
@SpringBootApplication
@ComponentScan(basePackages = {"com.your.package.controller"})
public class YourApplication {
    public static void main(String[] args) {
        SpringApplication.run(YourApplication.class, args);
    }
}

4. 验证WebSecurity配置的正确性

虽然权限配置大概率不是404的原因,但可以再确认一下:你的antMatchers("/createorganization").permitAll()是正确的,它会允许这个路径的所有请求绕过认证。不过要注意,如果你的请求是POST方法,但接口定义的是@GetMapping,也会返回404——但你用的是GET请求,所以这个点可以排除。

先优先修复第一个语法错误,这是最明显的问题,之后再依次排查其他点,应该就能解决404的问题了。

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

火山引擎 最新活动