HttpMessageCovnert请求信息统一转换
/** * 请求信息统一转换处理 * * @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); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构