Spring调用REST WebService出现404错误,请求技术支持
排查REST WebService 404错误的几个方向
嘿,我来帮你搞定这个404问题!咱们从最常见的几个排查点入手:
1. 确认请求的完整URL是否正确
你的方法上的@RequestMapping("/natlist")是相对路径,得结合应用的上下文路径和控制器类的前缀来拼完整URL:
- 如果你的应用部署时的上下文路径是
/my-app,那完整URL应该是http://你的域名:端口/my-app/natlist - 如果控制器类本身还有
@RequestMapping("/api")这样的前缀,那路径就得变成/api/natlist,完整URL就是http://你的域名:端口/my-app/api/natlist
先核对你调用代码里的URL是不是漏了这些部分!
2. 检查控制器类的注解和扫描配置
别忘了给你的控制器类加上@RestController(或者@Controller+@ResponseBody),否则Spring根本不会把它识别为REST接口处理。另外要确保这个类在Spring的组件扫描范围内(比如你的启动类上的@SpringBootApplication已经覆盖了这个类的包路径)。
正确的控制器类示例:
@RestController // 可选:如果有全局接口前缀可以加在这里 // @RequestMapping("/api") public class NacionalidadesController { @RequestMapping(value = "/natlist", produces = "application/json", method = RequestMethod.GET) public ResponseEntity<List<Nacionalidades>> getnatlist() { List<Nacionalidades> nacionalidadesList = new ArrayList<>(); // ... 你的业务逻辑代码 return new ResponseEntity<>(nacionalidadesList, HttpStatus.OK); } }
3. 确认请求方法完全匹配
你的接口明确指定了method = RequestMethod.GET,那调用代码必须用GET请求。如果调用时不小心用了POST/PUT等其他方法,就会返回404(或者405 Method Not Allowed,部分场景下也会表现为404)。
检查你的调用代码,比如用RestTemplate的话,要确保用的是GET相关方法,示例:
ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(); RestTemplate restTemplate = new RestTemplate(requestFactory); // 替换成你实际的完整URL String fullUrl = "http://localhost:8080/natlist"; List<Nacionalidades> natList = restTemplate.exchange( fullUrl, HttpMethod.GET, null, new ParameterizedTypeReference<List<Nacionalidades>>() {} ).getBody();
4. 先通过工具直接测试接口
建议先用Postman、curl这类工具直接请求接口,排除调用代码的问题:
# 替换成你的实际URL curl -X GET http://localhost:8080/natlist
如果工具请求也返回404,那问题肯定在服务端的配置(比如路径写错、控制器没被扫描到);如果工具请求正常,那就是你的调用代码里的URL或请求方法有问题。
内容的提问来源于stack exchange,提问作者Antonio Roque
相关产品推荐
相关产品推荐

