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

Spring应用运行正常但无法访问API接口的问题求助

Spring应用运行正常但无法访问API接口的问题求助

嘿,看起来你遇到Spring API接口访问失败的问题了,别慌,咱们一步步来排查可能的原因。你给出的ConducteurService代码片段目前没看到明显语法问题,但API访问失败通常和Controller层配置、请求映射、应用启动状态这些环节有关,我给你列几个常见的排查方向:

  • 先确认Controller层是否存在且配置正确
    你有没有编写对应的@RestController类?比如ConducteurController,必须在类上加上@RequestMapping("/api")(或更具体的子路径),同时要确保这个Controller能被Spring扫描到——要么它的包路径和项目启动类的包一致,要么启动类上用@ComponentScan指定了扫描范围。举个正确的Controller示例:

    @RestController
    @RequestMapping("/api")
    public class ConducteurController {
        @Autowired
        private ConducteurService conducteurService;
    
        @GetMapping("/available-drivers")
        public List<Conducteur> getAvailableDrivers(
            @RequestParam("date") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate date
        ) {
            return conducteurService.findAvailableDrivers(date);
        }
    }
    
  • 检查请求路径和HTTP方法是否完全匹配
    你访问的具体接口路径是什么?比如如果Controller里定义的是@GetMapping("/available-drivers"),那完整访问路径应该是localhost:8080/api/available-drivers,而且必须用GET请求(不能用POST/PUT等不匹配的方法)。建议用Postman或者curl工具测试,能直观看到错误状态码:404代表路径不对,405是HTTP方法不匹配,500则是服务器内部逻辑出错。

  • 确认应用启动的端口是否正确
    查看应用启动日志,找类似Tomcat started on port(s): 8080 (http)的日志,确认应用确实运行在8080端口。如果端口被占用,Spring Boot会自动切换到其他端口,这时候你访问8080自然会失败。也可以检查application.propertiesapplication.yml里的server.port配置值是否正确。

  • 排查Service层逻辑是否有隐藏异常
    你给出的findAvailableDrivers方法有省略部分,要确保这部分逻辑没有抛出未捕获的异常(比如空指针、数据库连接问题)。可以在方法里添加日志输出,或者在Controller层添加全局异常处理,返回更明确的错误信息:

    @ExceptionHandler(Exception.class)
    public ResponseEntity<String> handleGlobalException(Exception e) {
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
                .body("服务器内部错误: " + e.getMessage());
    }
    
  • 检查是否有拦截器/安全配置拦截了请求
    如果你的项目用了Spring Security或者自定义拦截器,要确认这些配置是否允许访问/api路径——有没有误加了认证授权限制,导致请求被拦截?可以暂时关闭安全配置测试一下,看是否能正常访问接口。

备注:内容来源于stack exchange,提问作者Manal L

火山引擎 最新活动