首页 > 其他分享 >HttpMessageCovnert请求信息统一转换

HttpMessageCovnert请求信息统一转换

时间:2024-02-18 17:00:27浏览次数:26  
标签:apiMallPath 转换 请求 outputMessage object HttpMessageCovnert type throws

/**
 * 请求信息统一转换处理
 *
 * @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

相关文章

  • 制表符转换为空格
    制表符转换为空格expand<filename>空格转换为制表符unexpand<filename>expand命令手册EXPAND(1)用户命令EXPAND(1)名称expand-将制表符转换为空格概要expand[选项]...[文件列表]...描述......
  • 配置springcloud 网关gateway 转发websocket请求
    网关是整个项目的统一入口这是直接访问消息服务的请求路径端口号是20007WebSocketService.init("ws://127.0.0.1:20007/ws/"+用户id)显然这样是不符合微服务的方案,所有请求必须经过网关处理,转发到各个服务之中所以我们需要在网关中的yml或者nacos中添加以下配置spring:......
  • (学习日记)一、Web框架-HTML标签-网页请求
    1.快速开发网站render_template是Flask框架的一个函数,用于渲染模板并生成动态的HTML文件app=Flask(name,template_floder(''路径''))构造一个Flask类赋给app,template_floder修改寻找模板的默认路径,默认是当前目录下的templates文件(没有则需要创建一个目录文件)fromflask......
  • (学习日记)六、Ajax请求
    15.Ajax请求浏览器向网站发送请求时:GETPOST特点:页面会刷新。也可以基于Ajax向后台发送请求(偷偷发送请求)依赖jQuery编写ajax$.ajax({url:"发送的地址",type:"post",data:{n1:123,n2:456,}success:function(res){co......
  • 频繁调一个http请求和多个不同http请求性能一样吗
    在讨论频繁调用一个HTTP请求和多个不同HTTP请求的性能时,我们需要考虑几个关键因素,包括网络延迟、服务器处理能力、请求的复杂性以及网络带宽等。在某些情况下,频繁调用一个HTTP请求可能和多个不同HTTP请求具有相似的性能,但在其他情况下,这两种做法可能会产生截然不同的结果。以下是......
  • Tauri http/https混用导致的请求失败的问题
    vite方案因为在项目里是需要使用http请求的,如果进行发布就会发现他的内置协议是https,导致http的请求发不出方案使用插件https://github.com/tauri-apps/plugins-workspace/tree/v1/plugins/localhost注意,我发现会闪退,文档上的例子去掉setup就好了(不知道为啥)路径:src......
  • C++类型转换
    C++类型转换静态转换:​ 用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换//指针voidtest02(){ Father*f=NULL; Son*s=NULL; //向下转换不安全 Son*s1=static_cast<Son*>(f); //向上转换安全 Father*f1=static_cast<Father*>(s); //没有继......
  • Nginx系列--转发请求的方法
    原文网址:​​Nginx系列--转发请求的方法_IT利刃出鞘的博客-CSDN博客​​简介说明本文介绍Nginx转发请求的方法。分享Java技术星球(自学精灵):​​https://learn.skyofit.com/​​需求用户访问aaa.com/bbb时,实际访问的是bbb123.com。方案1:return方法server{listen......
  • 类属性转换 拷贝 赋值
    参考链接 https://www.cnblogs.com/CodeBlogMan/p/18005657 三、类属性转换在实际Java开发中,关于VO、Entity、DTO等对象属性之间的赋值是我们经常遇见的,最简单使用@Data去逐个.set()或者@Builder链式.build(),其实都是很靠谱的办法,而且可以控制颗粒度。但属性一多......
  • 爬虫_060_urllib post请求百度翻译的详细翻译
    目录百度翻译详细翻译接口关于复制的小技巧复制浏览器全部的requestheader代码百度翻译详细翻译接口这个接口,是我上一次用的接口,MD。关于复制的小技巧这个接口的参数数据就比较多了,我们都需要构建到data对象当中。这里可以第一步,先复制数据,然后粘贴到sublime当中。第二步......