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;
}