POST请求映射缺失404错误求助:Spring Boot API Postman测试失败
排查Spring Boot API POST请求404错误:No mapping for POST /api/v1/cont/parties
测试Spring Boot API时,Postman反复返回404 Not Found错误,提示“No mapping for POST /api/v1/cont/parties”。已确认Postman请求URL(
http://localhost:8080/api/v1/cont/parties)与PartyController中的映射路径一致,但问题仍未解决。
控制器代码
package controllers; import assemblers.PartyModelAssembler; import dto.PartyDto; import model.Party; import org.modelmapper.ModelMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.hateoas.CollectionModel; import org.springframework.hateoas.EntityModel; import org.springframework.hateoas.IanaLinkRelations; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import services.IPartyService; import java.util.List; @RestController @RequestMapping("api/v1/cont") public class PartyController { @Autowired private ModelMapper modelMapper; @Autowired private IPartyService partyService; @Autowired private PartyModelAssembler partyModelAssembler; public PartyController() { super();} @PostMapping("/parties") public ResponseEntity<EntityModel<PartyDto>> newParty (@RequestBody PartyDto partyDto){ Party partyRequest = modelMapper.map(partyDto, Party.class); Party newParty = partyService.createParty(partyRequest); EntityModel<PartyDto> partyEntityModel = partyModelAssembler .toModel(modelMapper.map(newParty, PartyDto.class)); return ResponseEntity.created(partyEntityModel.getRequiredLink(IanaLinkRelations.SELF).toUri()) .body(partyEntityModel); } }
排查方向
- 控制器未被Spring扫描:检查Spring Boot主应用类所在包,默认只会扫描主类及其子包下的组件。如果主类包是
com.example,而控制器在controllers包(非子包),需在主类添加@ComponentScan(basePackages = {"controllers"}),或调整包结构让控制器处于主类子包中。 - 请求参数与方法不匹配:确认Postman发送的是POST请求,且请求头
Content-Type设为application/json(接口接收@RequestBody,需JSON格式请求体)。 - 上下文路径配置:查看
application.properties/yml是否设置了server.servlet.context-path,若有,请求URL需加上该前缀(比如配置/app,则URL应为http://localhost:8080/app/api/v1/cont/parties)。 - 依赖Bean初始化失败:检查启动日志,确认
ModelMapper、IPartyService实现类、PartyModelAssembler是否被正确注入。比如ModelMapper需通过@Bean配置,IPartyService实现类需加@Service注解,否则控制器初始化失败,无法注册映射。 - URL大小写问题:Spring请求映射默认大小写敏感,确保Postman的URL路径和控制器中完全一致(如
/parties和/Parties不匹配)。
内容的提问来源于stack exchange,提问作者Zaso
相关产品推荐
相关产品推荐

