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
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    Running ASP.NET Applications in Debian and Ubuntu using XSP and Mono
    .net extjs 封装
    ext direct spring
    install ubuntu tweak on ubuntu lts 10.04,this software is created by zhouding
    redis cookbook
    aptana eclipse plugin install on sts
    ubuntu open folderpath on terminal
    ubuntu install pae for the 32bit system 4g limited issue
    EXT Designer 正式版延长使用脚本
    用 Vagrant 快速建立開發環境
  • 原文地址:https://www.cnblogs.com/telwanggs/p/14794459.html
Copyright © 2011-2022 走看看