我这样子URL有admin,被拦截必须以管理员登陆,这个普通用户的列表接口怎么测试

我这样子URL有admin,被拦截必须以管理员登陆,这个普通用户的列表接口怎么测试

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

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

1回答
好帮手慕小蓝 2023-02-09 10:04:02

同学你好,可以直接在用户模块中调用这个方法,而不是通过URL进行访问,这里需要使用最基础的Java语法,创建CategoryController对象后调用方法。

但是这样做的弊端在于,程序的可维护性大大降低了。原因是:

1.代码中出现了硬编码:使用new语句创建对象;

2.模块间功能穿插:在用户模块调用管理员代码。

所以通常我们不会这样去设计,建议同学在用户模块下单独创建方法,逻辑可以与管理员一致即可。

祝学习愉快~

  • 提问者 weixin_慕少5379513 #1

    用户controller

    @Controller
    @RequestMapping("/user")
    public class UserController {
        @Autowired
        UserService userService;
        @Autowired
        CategoryService categoryService;
    //    @Autowired
    //    CategoryService categoryService;
    
        @GetMapping("/findUser")
        @ResponseBody
        public User findUser(){
            return userService.findUser();
        }
    
        @ApiOperation("后台数据列出商品目录,给用户看")
        @PostMapping("/listCategoryForUser")
        public ApiResponseObj listCategoryForUser(){
            List<CategoryVO> categoryVOS = categoryService.listForUser();
            return ApiResponseObj.success(categoryVOS);
        }

    category的实现类

    @Override
        public List<CategoryVO> listForUser(){
            ArrayList<CategoryVO> arrayList = new ArrayList<>();
            System.out.println(arrayList.toString());
    //        调用下面的递归查询方法
            recursiveFindCategory(0,arrayList);
            System.out.println(arrayList.toString());
            return arrayList;
        }
        private void recursiveFindCategory(Integer parentId,List<CategoryVO> categoryVOList){
            //手写mapper的查询selectByParentId
            List<Category> categoryList = categoryMapper.selectByParentId(parentId);
            //判断categoryList是不是空
    //        categoryList ==null,这样子判断不够全面
    //        CollectionUtils.isEmpty()的方法判断更全面,return collection == null || collection.isEmpty();
            if(!CollectionUtils.isEmpty(categoryList)){
                for (int i = 0; i < categoryList.size(); i++) {
                    Category category = categoryList.get(i);
                    CategoryVO categoryVO = new CategoryVO();
                    BeanUtils.copyProperties(category,categoryVO);
    //                categoryList.add(categoryVO);
                    categoryVOList.add(categoryVO);
                    recursiveFindCategory(categoryVO.getId(),categoryVO.getChildCategory());
                }
            }

    mapper

    <select id="selectByParentId" parameterType="integer" resultMap="BaseResultMap">
      select <include refid="Base_Column_List"></include>
      from imooc_mall_category
      where parent_id=#{parentId}
    </select>

    测试失败404,请问啥原因?

        "timestamp": "2023-02-09T05:15:08.214+0000",
        "status": 404,
        "error": "Not Found",
        "message": "No message available",
        "path": "/user/listCategoryForUser"
    }


    2023-02-09 13:27:48
  • 同学你好,由于同学代码与课程源码不能很好的兼容,老师无法直接对代码进行测试。从报错信息看,错误原因可能是listCategoryForUser()方法上没有加入@ResponseBody注解,建议同学加上之后再尝试一下。

    祝学习愉快~

    2023-02-09 13:44:54
  • listCategoryForUser()方法上没有加入@ResponseBody注解

    我检查一下,可以了谢谢

    2023-02-09 14:29:30
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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