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

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

相关文章
|
11月前
|
JSON 监控 API
掌握使用 requests 库发送各种 HTTP 请求和处理 API 响应
本课程全面讲解了使用 Python 的 requests 库进行 API 请求与响应处理,内容涵盖环境搭建、GET 与 POST 请求、参数传递、错误处理、请求头设置及实战项目开发。通过实例教学,学员可掌握基础到高级技巧,并完成天气查询应用等实际项目,适合初学者快速上手网络编程与 API 调用。
1018 130
|
12月前
HTTP协议中请求方式GET 与 POST 什么区别 ?
GET和POST的主要区别在于参数传递方式、安全性和应用场景。GET通过URL传递参数,长度受限且安全性较低,适合获取数据;而POST通过请求体传递参数,安全性更高,适合提交数据。
916 2
|
Go 定位技术
Golang中设置HTTP请求代理的策略
在实际应用中,可能还需要处理代理服务器的连接稳定性、响应时间、以及错误处理等。因此,建议在使用代理时增加适当的错误重试机制,以确保网络请求的健壮性。此外,由于网络编程涉及的细节较多,彻底测试以确认代理配置符合预期的行为也是十分重要的。
458 8
|
JSON JavaScript API
Python模拟HTTP请求实现APP自动签到
Python模拟HTTP请求实现APP自动签到
|
数据采集 JSON Go
Go语言实战案例:实现HTTP客户端请求并解析响应
本文是 Go 网络与并发实战系列的第 2 篇,详细介绍如何使用 Go 构建 HTTP 客户端,涵盖请求发送、响应解析、错误处理、Header 与 Body 提取等流程,并通过实战代码演示如何并发请求多个 URL,适合希望掌握 Go 网络编程基础的开发者。
|
缓存 JavaScript 前端开发
Vue 3 HTTP请求封装导致响应结果无法在浏览器中获取,尽管实际请求已成功。
通过逐项检查和调试,最终可以定位问题所在,修复后便能正常在浏览器中获取响应结果。
437 0
|
Go
如何在Go语言的HTTP请求中设置使用代理服务器
当使用特定的代理时,在某些情况下可能需要认证信息,认证信息可以在代理URL中提供,格式通常是:
759 0
|
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
java链接MongoDB处理大量数据时经常碰到cursor not found 的异常,其实是超时所致 Exception in thread "main" com.
1030 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
                                                                               1.
1968 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
从hadoop移除机器把需要移除的机器增加到exclueds文件中,强制刷新datanode列表,等待decommission 状态正常后,即可停机下架,如有必要在namenode执行balancer操作。
872 0

热门文章

最新文章