ruoyi-vue 项目 接口同时支持form表单、form-data、json,并支持分页参数放到jsonbody中,需要前端添加指定头信息

1、大体参考以下文章

SpringBoot一个接口同时支持form表单、form-data、json的优雅写法 - 简书

2、修改了

@Override
    public boolean supportsParameter(MethodParameter parameter) {
        return true;
    }

@Override
    public Object resolveArgument(MethodParameter methodParameter, ModelAndViewContainer modelAndViewContainer, NativeWebRequest nativeWebRequest, WebDataBinderFactory webDataBinderFactory) throws Exception {
        ServletRequest servletRequest = nativeWebRequest.getNativeRequest(ServletRequest.class);
        String contentType = servletRequest.getContentType();
        if (contentType == null) {
            return jsonResolver.resolveArgument(methodParameter, modelAndViewContainer, nativeWebRequest, webDataBinderFactory);

        }

3、修改ruoyi-vue框架中的 TableSupport的 getPageDomain()方法

public static final String CLIENTTYPE_PC = "client_pc";

public static final String CLIENTTYPE_WX = "client_wx";
PageDomain pageDomain = new PageDomain();
    String clientType = ServletUtils.getRequest().getHeader(CLIENTTYPE);
    if(Objects.isNull(clientType) || CLIENTTYPE_PC.equals(clientType)){
        pageDomain.setPageNum(Convert.toInt(ServletUtils.getParameter(PAGE_NUM), 1));
        pageDomain.setPageSize(Convert.toInt(ServletUtils.getParameter(PAGE_SIZE), 10));
        pageDomain.setOrderByColumn(ServletUtils.getParameter(ORDER_BY_COLUMN));
        pageDomain.setIsAsc(ServletUtils.getParameter(IS_ASC));
        pageDomain.setReasonable(ServletUtils.getParameterToBool(REASONABLE));
    }else if(CLIENTTYPE_WX.equals(clientType)){
        try {
            BufferedReader reader = ServletUtils.getRequest().getReader();
            StringBuilder builder = new StringBuilder();
            String line = reader.readLine();
            while(line != null){
                builder.append(line);
                line = reader.readLine();
            }
            reader.close();
            String reqBody = builder.toString();
            JSONObject requestJson = JSONObject.parseObject(reqBody);
            if(Objects.nonNull(requestJson)){
                pageDomain.setPageNum(Convert.toInt(requestJson.getString(PAGE_NUM), 1));
                pageDomain.setPageSize(Convert.toInt(requestJson.getString(PAGE_SIZE), 10));
                pageDomain.setOrderByColumn(requestJson.getString(ORDER_BY_COLUMN));
                pageDomain.setIsAsc(requestJson.getString(IS_ASC));
                pageDomain.setReasonable(requestJson.getBoolean(REASONABLE));
            }
        } catch (IOException e) {
            log.error("获取app小程序端请求参数异常");
        }
    }else {
        pageDomain.setPageNum(Convert.toInt(ServletUtils.getParameter(PAGE_NUM), 1));
        pageDomain.setPageSize(Convert.toInt(ServletUtils.getParameter(PAGE_SIZE), 10));
        pageDomain.setOrderByColumn(ServletUtils.getParameter(ORDER_BY_COLUMN));
        pageDomain.setIsAsc(ServletUtils.getParameter(IS_ASC));
        pageDomain.setReasonable(ServletUtils.getParameterToBool(REASONABLE));
    }

    return pageDomain;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值