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

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

相关文章
|
16天前
|
监控 网络协议 应用服务中间件
【Tomcat源码分析】从零开始理解 HTTP 请求处理 (第一篇)
本文详细解析了Tomcat架构中复杂的`Connector`组件。作为客户端与服务器间沟通的桥梁,`Connector`负责接收请求、封装为`Request`和`Response`对象,并传递给`Container`处理。文章通过四个关键问题逐步剖析了`Connector`的工作原理,并深入探讨了其构造方法、`init()`与`start()`方法。通过分析`ProtocolHandler`、`Endpoint`等核心组件,揭示了`Connector`初始化及启动的全过程。本文适合希望深入了解Tomcat内部机制的读者。欢迎关注并点赞,持续更新中。如有问题,可搜索【码上遇见你】交流。
【Tomcat源码分析】从零开始理解 HTTP 请求处理 (第一篇)
|
24天前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
101 3
快速上手|HTTP 接口功能自动化测试
|
5天前
|
JSON Java 数据格式
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
11 1
|
22天前
|
安全 网络安全 数据安全/隐私保护
HTTP与HTTPS协议区别及应用场景
在互联网高速发展的今天,HTTP与HTTPS作为数据传输的基石,作用至关重要。HTTP允许客户端与服务器间传输超文本文档,但其数据传输过程未加密,存在安全隐患;HTTPS则在此基础上加入了SSL/TLS协议,实现了数据加密传输,增强了安全性,广泛应用于电子商务、网上银行、政府网站及社交媒体平台等涉及敏感信息传输的领域,有效保护了用户隐私和数据安全。随着网络安全意识提升,HTTPS正逐渐成为主流。
|
25天前
|
JSON JavaScript 前端开发
Haskell中的数据交换:通过http-conduit发送JSON请求
Haskell中的数据交换:通过http-conduit发送JSON请求
|
27天前
|
JSON API 开发者
Python网络编程新纪元:urllib与requests库,让你的HTTP请求无所不能
【9月更文挑战第9天】随着互联网的发展,网络编程成为现代软件开发的关键部分。Python凭借简洁、易读及强大的特性,在该领域展现出独特魅力。本文介绍了Python标准库中的`urllib`和第三方库`requests`在处理HTTP请求方面的优势。`urllib`虽API底层但功能全面,适用于深入控制HTTP请求;而`requests`则以简洁的API和人性化设计著称,使HTTP请求变得简单高效。两者互补共存,共同推动Python网络编程进入全新纪元,无论初学者还是资深开发者都能从中受益。
39 7
|
25天前
|
开发者
HTTP状态码是由网页服务器返回的三位数字响应代码,用于表示请求的处理结果和状态
HTTP状态码是由网页服务器返回的三位数字响应代码,用于表示请求的处理结果和状态
24 1
|
28天前
|
存储 JSON API
Python编程:解析HTTP请求返回的JSON数据
使用Python处理HTTP请求和解析JSON数据既直接又高效。`requests`库的简洁性和强大功能使得发送请求、接收和解析响应变得异常简单。以上步骤和示例提供了一个基础的框架,可以根据你的具体需求进行调整和扩展。通过合适的异常处理,你的代码将更加健壮和可靠,为用户提供更加流畅的体验。
65 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
线程的状态有:new、runnable、running、waiting、timed_waiting、blocked、dead 当执行new Thread(Runnabler)后,新创建出来的线程处于new状态,这种线程不可能执行 当执行thread.start()后,线程处于runnable状态,这种情况下只要得到CPU,就可以开始执行了。
720 0
|
Web App开发 前端开发

热门文章

最新文章

下一篇
无影云桌面