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

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

相关文章
|
5天前
|
API 数据安全/隐私保护
Haskell中的HTTP请求:代理与响应状态检查
Haskell中的HTTP请求:代理与响应状态检查
|
2月前
|
JSON Java 数据格式
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
107 25
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
|
1月前
|
缓存 应用服务中间件 Apache
HTTP 范围Range请求
HTTP范围请求是一种强大的技术,允许客户端请求资源的部分内容,提高了传输效率和用户体验。通过正确配置服务器和实现范围请求,可以在视频流、断点续传下载等场景中发挥重要作用。希望本文提供的详细介绍和示例代码能帮助您更好地理解和应用这一技术。
89 19
|
2月前
|
JSON JavaScript 前端开发
什么是HTTP POST请求?初学者指南与示范
HTTP POST请求是一种常用的HTTP方法,主要用于向服务器发送数据。通过合理设置请求头和请求主体,可以实现数据的可靠传输。无论是在客户端使用JavaScript,还是在服务器端使用Node.js,理解和掌握POST请求的工作原理和应用场景,对于Web开发至关重要。
353 18
|
2月前
|
JSON 数据格式
.net HTTP请求类封装
`HttpRequestHelper` 是一个用于简化 HTTP 请求的辅助类,支持发送 GET 和 POST 请求。它使用 `HttpClient` 发起请求,并通过 `Newtonsoft.Json` 处理 JSON 数据。示例展示了如何使用该类发送请求并处理响应。注意事项包括:简单的错误处理、需安装 `Newtonsoft.Json` 依赖,以及建议重用 `HttpClient` 实例以优化性能。
89 2
|
2月前
|
Web App开发 大数据 应用服务中间件
什么是 HTTP Range请求(范围请求)
HTTP Range 请求是一种非常有用的 HTTP 功能,允许客户端请求资源的特定部分,从而提高传输效率和用户体验。通过合理使用 Range 请求,可以实现断点续传、视频流播放和按需加载等功能。了解并掌握 HTTP Range 请求的工作原理和应用场景,对开发高效的网络应用至关重要。
221 15
|
2月前
|
Web App开发 网络安全 数据安全/隐私保护
Lua中实现HTTP请求的User-Agent自定义
Lua中实现HTTP请求的User-Agent自定义
|
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
fuser可用于查询文件、目录、socket端口和文件系统的使用进程 1.查询文件和目录使用者 fuser最基本的用法是查询某个文件或目录被哪个进程使用: # fuser -v .
902 0