糊涂工具类真是场景下请求http接口的案例

简介: 糊涂工具类真是场景下请求http接口的案例


现在是:2022年7月7日13:46:07

前言

今天有个这样的需求,PC端需要查看一下哪些天有数据,但是哪些有有没有数据我这边还看不出来,得请求别的系统的接口去看。且团组和会员请求的接口和请求方式均不一样。

前端说为了方便,团组和个人都走一个接口吧,让我这边封装一下……

实现

如何区分前台请求的是会员的还是团组的

让前台这样传,如果不传groupId,传memberId,则我就知道了,请求的是查询会员的信息。反之则请求的是团组的接口。

代码如下:

if(Strings.isNotBlank(groupId)){
      //是团组
      //查询这个团组下面的人
      LambdaQueryWrapper<GroupUser> groupUserLambdaQueryWrapper = new LambdaQueryWrapper<>();
      groupUserLambdaQueryWrapper.eq(GroupUser::getGroupId, groupId);
      List<GroupUser> groupUserList = groupUserService.list(groupUserLambdaQueryWrapper);
      List<Long> userList = new ArrayList<>();
      groupUserList.forEach(group->{
        userList.add(group.getUserId());
      });
      //集合去重
      List<Long> memberIdList =
        userList
          .stream()
          .distinct()
          .collect(Collectors.toList());
      url = ServicePathConstant.HBV_GATAWAY+"/doctor/api/doctor/getMemberDataDays";
      body = HttpUtil.createPost(url)
        .contentType("application/json")
        .body(JSON.toJSONString(memberIdList)).execute().body();
    }else if(Strings.isNotBlank(memberId)){
      //是会员
      url = ServicePathConstant.HBV_GATAWAY+"/doctor/api/doctor/getMemberDataDays/"+memberId;
      body = HttpUtil.createGet(url).execute().body();
    }

里面涉及到了些别的代码,集合去重:

//集合去重
      List<Long> memberIdList =
        userList
          .stream()
          .distinct()
          .collect(Collectors.toList());

还别说,这个地方用的还挺多的,不过每次用到了之后都是翻之前的代码。。。。。

完整代码如下:

/**
   * 获取有日期的报告吗,返回一个集合
   * @param groupId
   * @return
   */
  @GetMapping("/getReportHaveDateList")
  public Object getReportHaveDateList(String groupId,String memberId) {
    cn.hutool.json.JSONObject jsonObjectResult = new cn.hutool.json.JSONObject();
    //请求接口地址
    String url = "";
    String body = "";
    if(Strings.isNotBlank(groupId)){
      //是团组
      //查询这个团组下面的人
      LambdaQueryWrapper<GroupUser> groupUserLambdaQueryWrapper = new LambdaQueryWrapper<>();
      groupUserLambdaQueryWrapper.eq(GroupUser::getGroupId, groupId);
      List<GroupUser> groupUserList = groupUserService.list(groupUserLambdaQueryWrapper);
      List<Long> userList = new ArrayList<>();
      groupUserList.forEach(group->{
        userList.add(group.getUserId());
      });
      //集合去重
      List<Long> memberIdList =
        userList
          .stream()
          .distinct()
          .collect(Collectors.toList());
      url = ServicePathConstant.HBV_GATAWAY+"/doctor/api/doctor/getMemberDataDays";
      body = HttpUtil.createPost(url)
        .contentType("application/json")
        .body(JSON.toJSONString(memberIdList)).execute().body();
    }else if(Strings.isNotBlank(memberId)){
      //是会员
      url = ServicePathConstant.HBV_GATAWAY+"/doctor/api/doctor/getMemberDataDays/"+memberId;
      body = HttpUtil.createGet(url).execute().body();
    }
    if (StringUtils.isBlank(body)) {
      jsonObjectResult.putOpt("code", 500);
      jsonObjectResult.putOpt("data", null);
      jsonObjectResult.putOpt("msg", "操作失败");
      return jsonObjectResult;
    }
    cn.hutool.json.JSONObject obj = JSONUtil.parseObj(body);
    if (obj == null) {
      jsonObjectResult.putOpt("code", 500);
      jsonObjectResult.putOpt("data", null);
      jsonObjectResult.putOpt("msg", "操作失败");
      return jsonObjectResult;
    }
    String code = obj.get("code").toString();
    String msg = obj.get("msg").toString();
    System.out.println("调用doctor系统返回的信息:"+msg);
    if ("200".equals(code)) {
      jsonObjectResult.putOpt("code", 200);
      jsonObjectResult.putOpt("data", obj.get("data"));
      jsonObjectResult.putOpt("msg", "操作成功");
      //标记有没有记录
      jsonObjectResult.putOpt("count", obj.getJSONArray("data").size());
      return jsonObjectResult;
    }else{
      jsonObjectResult.putOpt("code", 200);
      jsonObjectResult.putOpt("data", new ArrayList<String>());
      jsonObjectResult.putOpt("msg", "操作成功");
      //标记有没有记录
      jsonObjectResult.putOpt("count", 0);
      return jsonObjectResult;
    }
  }

顺便在记录一下糊涂工具类请求接口的几种方式吧:

  1. post方法form传参:
//接口地址
  String url = "";
  //请求参数
  Map<String, Object> paramMap = new HashMap<>();
  map.put("groupId", "1506254142554785");
  //请求头
  HashMap<String, String> headers = new HashMap<>();
  headers.put("Authorization", token);
  String result= HttpUtil.createPost(url).addHeaders(headers).form(map).execute().body();
  1. post方法json传参:
//接口地址
  String url = "";
  //请求参数
  Map<String, Object> paramMap = new HashMap<>();
  map.put("groupId", "1506254142554785");
  //请求头
  HashMap<String, String> headers = new HashMap<>();
  headers.put("Authorization", token);
  String body = HttpUtil.createPost(url)
        .contentType("application/json")
        .body(JSON.toJSONString(projectVo)).execute().body();

projectVo就是一个json格式的数据。

  1. get方法form传参:
//接口地址
  String url = "";
  //请求参数
  Map<String, Object> paramMap = new HashMap<>();
  map.put("groupId", "1506254142554785");
  //请求头
  HashMap<String, String> headers = new HashMap<>();
  headers.put("Authorization", token);
  String body = HttpUtil.createGet(url).header("Authorization", token).form(paramMap).execute().body();

这就是今天分享的内容,谢谢大家的捧场!!!

相关文章
|
1月前
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
124 3
|
13天前
|
JSON Java 数据格式
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
62 25
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
|
11天前
|
Web App开发 大数据 应用服务中间件
什么是 HTTP Range请求(范围请求)
HTTP Range 请求是一种非常有用的 HTTP 功能,允许客户端请求资源的特定部分,从而提高传输效率和用户体验。通过合理使用 Range 请求,可以实现断点续传、视频流播放和按需加载等功能。了解并掌握 HTTP Range 请求的工作原理和应用场景,对开发高效的网络应用至关重要。
51 15
|
15天前
|
数据采集 JSON 测试技术
Grequests,非常 Nice 的 Python 异步 HTTP 请求神器
在Python开发中,处理HTTP请求至关重要。`grequests`库基于`requests`,支持异步请求,通过`gevent`实现并发,提高性能。本文介绍了`grequests`的安装、基本与高级功能,如GET/POST请求、并发控制等,并探讨其在实际项目中的应用。
25 3
|
20天前
|
前端开发 UED 开发者
CSS Sprites和图标字体在网页图标加载优化中的应用。CSS Sprites通过合并多图标减少HTTP请求,提升加载速度
本文探讨了CSS Sprites和图标字体在网页图标加载优化中的应用。CSS Sprites通过合并多图标减少HTTP请求,提升加载速度;图标字体则以字体形式呈现图标,便于调整样式。文章分析了两者的优缺点及应用场景,并提供了应用技巧和注意事项,旨在帮助开发者提升页面性能,改善用户体验。
21 5
|
1月前
|
JSON API 数据格式
Python中获取HTTP请求响应体的详解
本文介绍了如何使用Python的`requests`和`urllib`库发送HTTP请求并处理响应体。`requests`库简化了HTTP请求过程,适合快速开发;`urllib`库则更为底层,适用于性能要求较高的场景。文章详细演示了发送GET请求、处理JSON响应等常见操作。
44 3
|
12天前
|
Web App开发 网络安全 数据安全/隐私保护
Lua中实现HTTP请求的User-Agent自定义
Lua中实现HTTP请求的User-Agent自定义
|
Web App开发 前端开发 Android开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
使用MAT分析内存泄露 对于大型服务端应用程序来说,有些内存泄露问题很难在测试阶段发现,此时就需要分析JVM Heap Dump文件来找出问题。
786 0
|
Java Apache
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
hbase从集群中有8台regionserver服务器,已稳定运行了5个多月,8月15号,发现集群中4个datanode进程死了,经查原因是内存 outofMemory了(因为这几台机器上部署了spark,给spark开的...
813 0