zoukankan      html  css  js  c++  java
  • 【转载】Spring boot API测试 Controller逻辑正常但返回404

    https://blog.csdn.net/w05980598/article/details/79144353

    使用postman测试接口,返回404错误,如下所示

    {
    "timestamp": 1516711514877,
    "status": 404,
    "error": "Not Found",
    "message": "No message available",
    "path": "/sell/buyer/order/create"
    }
    查看Controller层,并打印ResultVOUtil.success代码如下

    <textarea readonly="readonly" name="code" class="Java">
    @PostMapping("/create")
    public ResultVO create(@Valid OrderForm orderForm, BindingResult bindingResult){
    if (bindingResult.hasErrors()) {
    log.error("【创建订单】参数不正确,OrderForm={}",orderForm);
    throw new SellException(ResultEnum.PARAM_ERROR.getCode(),
    bindingResult.getFieldError().getDefaultMessage());
    }
    OrderDTO orderDTO = OrderForm2OrderDTO.convert(orderForm);
    if (CollectionUtils.isEmpty(orderDTO.getOrderDetails()) ) {
    log.error("【创建订单】购物车不能为空");
    throw new SellException(ResultEnum.CART_IS_EMPTY);
    }
    /**
    * 数据库存储 订单信息
    */
    OrderDTO creatResult=orderService.creat(orderDTO);
    /** 拼接返回数据*/
    Map<String,String> map = new HashMap<>();
    map.put("orderId",creatResult.getOrderId());
    System.out.println(ResultVOUtil.success(map));
    return ResultVOUtil.success(map);

    打印ResultVOUtil.success(map)显示内容如下

    ResultVO(code=0, msg=success, data={orderId=1516711514688210126})
    那就奇怪了,在return该对象时候,API测试就提示404了。后来发现注解如下 用的是@Controller注解

    @Controller
    @Slf4j
    @RequestMapping("/buyer/order")
    将Controller改为RestConntroller问题成功解决!


    附:@Controller和@RestConntroller区别

    @RestController is a stereotype annotation that combines @ResponseBody and @Controller.
    意思是:
    @RestController注解相当于@ResponseBody + @Controller合在一起的作用。


    1)如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。

    例如:本来应该到success.jsp页面的,则其显示success.

    2)如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。
    3)如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。
    ---------------------
    作者:福尔摩帅
    来源:CSDN
    原文:https://blog.csdn.net/w05980598/article/details/79144353
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    POJ 1426 Find The Multiple(数论——中国同余定理)
    POJ 2253 Frogger(Dijkstra变形——最短路径最大权值)
    POJ 3790 最短路径问题(Dijkstra变形——最短路径双重最小权值)
    POJ 3278 Catch That Cow(模板——BFS)
    HDU 1071 The area
    HDU 1213 How Many Tables(模板——并查集)
    POJ 1611 The Suspects
    light oj 1214 Large Division
    POJ 1258 Agri-Net(Prim算法求解MST)
    POJ 2387 Til the Cows Come Home(模板——Dijkstra算法)
  • 原文地址:https://www.cnblogs.com/telwanggs/p/14794459.html
Copyright © 2011-2022 走看看