糊涂工具类真是场景下请求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();

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

相关文章
|
21天前
|
监控 测试技术 Go
告别传统Log追踪!GOAT如何用HTTP接口重塑代码监控
本文介绍了GOAT(Golang Application Tracing)工具的使用方法,通过一个Echo问答服务实例,详细展示了代码埋点与追踪技术的应用。内容涵盖初始化配置、自动埋点、手动调整埋点、数据监控及清理埋点等核心功能。GOAT适用于灰度发布、功能验证、性能分析、Bug排查和代码重构等场景,助力Go项目质量保障与平稳发布。工具以轻量高效的特点,为开发团队提供数据支持,优化决策流程。
157 34
|
18天前
|
JSON API 数据安全/隐私保护
使用curl命令在服务器上执行HTTP请求
总的来说,curl是一个非常强大的工具,它可以让你在命令行中发送各种类型的HTTP请求。通过学习和实践,你可以掌握这个工具,使你的工作更加高效。
79 30
|
11天前
|
JSON 安全 网络协议
HTTP/HTTPS协议(请求响应模型、状态码)
本文简要介绍了HTTP与HTTPS协议的基础知识。HTTP是一种无状态的超文本传输协议,基于TCP/IP,常用80端口,通过请求-响应模型实现客户端与服务器间的通信;HTTPS为HTTP的安全版本,基于SSL/TLS加密技术,使用443端口,确保数据传输的安全性。文中还详细描述了HTTP请求方法(如GET、POST)、请求与响应头字段、状态码分类及意义,并对比了两者在请求-响应模型中的安全性差异。
92 20
|
1月前
|
Linux C语言 iOS开发
C语言结合AWTK开发HTTP接口访问界面
这样,我们就实现了在C语言中使用libcurl和AWTK来访问HTTP接口并在界面上显示结果。这只是一个基础的示例,你可以根据需要添加更多的功能和优化。例如,你可以添加错误处理机制、支持更多HTTP方法(如POST、PUT等)、优化用户界面等。
76 26
|
23天前
|
XML 网络协议 程序员
Apipost接口调试全解:从HTTP到gRPC,程序员必备的“协议生存指南
Apipost是一款强大的接口调试工具,支持多种主流API协议。它涵盖HTTP/HTTPS、WebSocket、Socket.IO、gRPC、GraphQL、TCP及ISO8583金融报文等冷门协议。通过Body多样化、全局参数配置、性能分析等功能优化HTTP调试;提供WebSocket多消息存档与事件监听;gRPC支持服务反射和流式调试;GraphQL可自动生成Schema;TCP报文模板专业精准;SSE配置简单。此外,Apipost还具备环境变量、脚本加持和文档生成功能,是提升开发效率的全能工具。
|
1月前
|
缓存 安全 Java
深入解析HTTP请求方法:Spring Boot实战与最佳实践
这篇博客结合了HTTP规范、Spring Boot实现和实际工程经验,通过代码示例、对比表格和架构图等方式,系统性地讲解了不同HTTP方法的应用场景和最佳实践。
137 5
|
2月前
|
API Kotlin
动态URL构建与HTTP请求的Kotlin实现
动态URL构建与HTTP请求的Kotlin实现
|
2月前
|
JavaScript 前端开发 API
Superagent 异步请求:如何处理复杂的 HTTP 场景
Superagent 异步请求:如何处理复杂的 HTTP 场景
|
Web App开发 前端开发 Java
<!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
线程的状态有:new、runnable、running、waiting、timed_waiting、blocked、dead 当执行new Thread(Runnabler)后,新创建出来的线程处于new状态,这种线程不可能执行 当执行thread.start()后,线程处于runnable状态,这种情况下只要得到CPU,就可以开始执行了。
775 0
|
Web App开发 前端开发
<!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
总结和计划总是让人喜悦或镇痛,一方面以前一段时间没有荒废,能给现在的行动以信心,另一方面看到一年的时间并不能完成很多事情,需要抓紧时间。
664 0