接口测试异常

接口测试异常

package com.zdq.mall.controller;

import com.zdq.mall.common.ApiRestResponse;
import com.zdq.mall.common.Constant;
import com.zdq.mall.exception.MallExceptionEnum;
import com.zdq.mall.model.pojo.User;
import com.zdq.mall.model.request.AddCategoryReq;
import com.zdq.mall.service.CategoryService;
import com.zdq.mall.service.UserService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import javax.validation.Valid;

/**
 * 描述:   目录Controller
 */
@Controller
public class CategoryConroller {
    @Autowired
    UserService userService;
    @Autowired
    CategoryService categoryService;

    /**
     * 后台添加目录
     * @param session
     * @param addCategoryReq
     * @return
     */
    @ApiOperation("后台添加目录")
    @PostMapping("admin/category/add")
    @ResponseBody
    public ApiRestResponse addCategroy(HttpSession session,@Valid  AddCategoryReq addCategoryReq){
        User currentUser =(User) session.getAttribute(Constant.MALL_USER);
        if(currentUser==null){
            return ApiRestResponse.error(MallExceptionEnum.NEED_LOGIN);
        }
        //校验是否是管理员
        boolean adminRole = userService.checkAdminRole(currentUser);
        if(adminRole){
            //是管理员,执行操作
            categoryService.add(addCategoryReq);
            return ApiRestResponse.success();
        }else{
            return ApiRestResponse.error(MallExceptionEnum.NEED_ADMIN);
        }
    }
}

相关代码:

package com.zdq.mall.model.request;

import javax.validation.constraints.Max;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

/**
 * 描述:     添加目录的请求类
 */
public class AddCategoryReq {
    @Size(min=2,max=5)
    @NotNull
    private String name;
    @NotNull
    @Max(3)
    private Integer type;
    @NotNull
    private Integer parentId;
    @NotNull
    private Integer orderNum;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getType() {
        return type;
    }

    public void setType(Integer type) {
        this.type = type;
    }

    public Integer getParentId() {
        return parentId;
    }

    public void setParentId(Integer parentId) {
        this.parentId = parentId;
    }

    public Integer getOrderNum() {
        return orderNum;
    }

    public void setOrderNum(Integer orderNum) {
        this.orderNum = orderNum;
    }
}

相关代码:

package com.zdq.mall.exception;

import com.zdq.mall.common.ApiRestResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.ArrayList;
import java.util.List;

/**
 * 描述:      处理统一异常的handler
 */
@ControllerAdvice
public class GlobalExceptionHandler {
    private final Logger log= LoggerFactory.getLogger(CloneNotSupportedException.class);
//    @ExceptionHandler(Exception.class)
//    @ResponseBody
//    public Object handleException(Exception e){
//        log.error("Default Exception: ",e);
//        return ApiRestResponse.error(MallExceptionEnum.SYSTEM_ERROR);
//    }
    @ExceptionHandler(MallException.class)
    @ResponseBody
    public Object handleMallException(MallException e){
        log.error("MallException: ",e);
        return ApiRestResponse.error(e.getCode(),e.getMessage());
    }
@ExceptionHandler(MethodArgumentNotValidException.class)
    @ResponseBody
    public ApiRestResponse handleMethodArgumentNotValidException(
            MethodArgumentNotValidException e) {
        log.error("MethodArgumentNotValidException: ", e);
        return handleBindingResult(e.getBindingResult());
    }

    private ApiRestResponse handleBindingResult(BindingResult result) {
        //把异常处理为对外暴露的提示
        List<String> list = new ArrayList<>();
        if (result.hasErrors()) {
            List<ObjectError> allErrors = result.getAllErrors();
            for (ObjectError objectError : allErrors) {
                String message = objectError.getDefaultMessage();
                list.add(message);
            }
        }
        if (list.size() == 0) {
            return ApiRestResponse.error(MallExceptionEnum.REQUEST_PARAM_ERROR);
        }
        return ApiRestResponse
                .error(MallExceptionEnum.REQUEST_PARAM_ERROR.getCode(), list.toString());
    }
}

相关截图:

https://img1.sycdn.imooc.com/climg/65dab180094d06eb17511022.jpg

问题描述:

接口测试不通过,不知道哪里出现问题了,控制台都能显示出来异常

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小尤 2024-02-26 09:29:24

同学你好,1、同学缺少@RequestBody注解,建议同学添加上试一下。如下所示:

https://img1.sycdn.imooc.com/climg/65dbe87f09e42b1f10290198.jpg

2、如果还存在问题,建议同学反馈一下具体的异常信息。

祝学习愉快!

  • 提问者 有点瑕疵 #1

    https://img1.sycdn.imooc.com/climg/65dd566c09a9532811230538.jpg

    不是我不加 报错

    2024-02-27 11:26:55
  • 提问者 有点瑕疵 #2

    ok 看错了 已解决

    2024-02-27 11:31:17
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师