/** * 请求信息统一转换处理 * * @author weiye.li */ public class MallMappingJackson2HttpMessageConverter extends MappingJackson2HttpMessageConverter { /** * 需要转换请求的路径 ,yml 文件配置- @Bean 中new MallMappingJackson2HttpMessageConverter(path) 将其传入 */ private String apiMallPath; public MallMappingJackson2HttpMessageConverter(String apiMallPath) { this.apiMallPath = apiMallPath; } @Override public Object read(Type type, Class<?> contextClass, HttpInputMessage inputMessage) throws HttpMessageNotReadableException, IOException { //判断是否需要转换 if (!this.isMatch()) { return super.read(type, contextClass, inputMessage); } //转换请求 OsRequest osRequest = JSONUtil.toBean(StrUtil.str(IoUtil.readBytes(inputMessage.getBody()), StandardCharsets.UTF_8), OsRequest.class); if (osRequest == null || osRequest.getSign() == null) { throw new ValidateException("无效请求参数,非开放平台下发json结构"); } // 将原始信息取出 部分如需要处理的 json 字符串 进行向下传递到 controller中 return this.objectMapper.readValue(osRequest.getMessage(), getJavaType(type, contextClass)); } /** * 对输出信息进行转换,转换成统一对外输出对象 * @param object * @param type * @param outputMessage * @throws IOException * @throws HttpMessageNotWritableException */ @Override protected void writeInternal(Object object, Type type, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException { //进入全局异常或者url不匹配, 则不转换 if (object instanceof OsResponse || !this.isMatch()) { super.writeInternal(object, type, outputMessage); return; } super.writeInternal(OsResponse.success(object), OsResponse.class, outputMessage); } }
标签:apiMallPath,转换,请求,outputMessage,object,HttpMessageCovnert,type,throws From: https://www.cnblogs.com/liyanbofly/p/18019582