代码之家  ›  专栏  ›  技术社区  ›  Maddy

升级到Spring boot 2.x后请求映射不起作用

  •  1
  • Maddy  · 技术社区  · 6 年前

    我有以下控制器在Spring boot 1.x中运行良好:

    @Log4j2
    @RestController
    @RequestMapping(value = "/delivery/{id}")
    public class DeliveryController {
    
        @Autowired
        private DeliveryService deliveryService;
    
        /**
         * request mapping of http GET method.
         *
         * @param id    
         * @param serviceId id
         * @param accessKey password
         * @param request   use for log output only
         * @return MyDeliveryDto data exist 200(OK) : data not exist 204(NO_CONTENT)
         * @throws ServiceUnavailableException When the maintenance flag is true in the application.yml.
         * @throws UnAuthorizedException       serviceid and accessKey invalid.
         * @throws ForbiddenException          serviceID not registered in application.yml.
         */
        @ResponseBody
        @RequestMapping(method = RequestMethod.GET)
        public ResponseEntity<MyDeliveryDto> get(@PathVariable Long id,
                                                 String serviceId,
                                                 String accessKey,
                                                 HttpServletRequest request)
                throws ServiceUnavailableException, UnAuthorizedException, ForbiddenException {
            MyDeliveryDto dto = deliveryService.select(id, serviceId, accessKey);
            log.info("response dto : {}, serviceId : {}", dto, serviceId);
            if (Objects.isNull(dto)) {
                return new ResponseEntity<>(HttpStatus.NO_CONTENT);
            }
            return new ResponseEntity<MyDeliveryDto>(dto, HttpStatus.OK);
        }
    }
    

    {
        "timestamp": "2018/08/10T10:35:59.459+0900",
        "status": 404,
        "error": "Not Found",
        "message": "No message available",
        "path": "/mydata-api/delivery/123"
    }
    

    我迁移到新版本时有没有遗漏什么?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Maddy    6 年前

    找到问题-上下文路径配置已移动到 server.servlet.context-path 所以老的 server.context-path