当前位置: 首页 > news >正文

北京网站制作很好 乐云践新青岛做公司网站

北京网站制作很好 乐云践新,青岛做公司网站,北京高校线上教学,火狐网站开发好的插件前言 在做java接口自动化中,我们常常需要依赖多个接口,A接口依赖B,C,D接口的响应作为请求参数;或者URL中的参数是从其他接口中提取返回值作获取参数这是必不可少的。那么怎么实现呢?下面就来介绍多业务依赖…

前言
在做java接口自动化中,我们常常需要依赖多个接口,A接口依赖B,C,D接口的响应作为请求参数;或者URL中的参数是从其他接口中提取返回值作获取参数这是必不可少的。那么怎么实现呢?下面就来介绍多业务依赖多接口的代码思路。

思路:
1、先new一个HttpClientUtils对象,构造一个queryParamMap用来放请求参数 ,再构造 一个headers的Map用来放请求头
2、调用get/post请求 获得请求返回值
3、用jsonpath技术, 对A接口中的响应值data取出来
4、遍历获取到的list 然后for循环每条数据
5、close关闭HttpClientUtils对象 释放资源

首先,我们来看下 getCategoryBookList 根据分类名称查询书籍接口 在Controller层代码实现如图所示

 /*** 根据分类名称查询书籍** @return*/@GetMapping("/getCategoryBookList")@ResponseBodypublic CommonResponse<List<Book>> getCategoryBookList(@RequestParam(value = "categoryName") String name) {List<Book> categoryList = bookService.getCategoryBookList(name);CommonResponse response = CommonResponse.successInstance(categoryList);return response;}

代码解释

  • CommonResponse这个类 是与前端交互用的 因为这个类里面还有请求的statusCode msg
    data,如果你想把httpClient调用接口的返回值 返给前端
    就将返回值设置到CommonResponse的data中就行
  • @RequestParam(value = "categoryName")如果是问号后面拼的参数 这个用@RequestParam来取,告诉springboot 这个name对应的就是参数中的categoryName,就是说前端页面给你传的参数名叫categoryName 但是你代码中写的变量名是name 如果不加这个参数 是接收不到的 所以需要注解映射
  • CommonResponse.successInstance(categoryList)通用返回值,返回成功message,返回数据data,返回总条数count

其次,我们需要提取/getCategoryBookList接口返回的bookName值
在这里插入图片描述
使用JsonPath提取,代码如下

    @GetMapping("/returnHttpGet")@ResponseBodypublic CommonResponse returnHttpGet(@RequestParam(value = "categoryName") String categoryName) {String url = "http://localhost:9527/book/getCategoryBookList";HttpClientUtils client = new HttpClientUtils(null);Map<String, String> headers = new HashMap<>();headers.put("Content-Type", "application/x-www-form-urlencoded");Map<String, String> queryParam = new HashMap<>();queryParam.put("categoryName", categoryName);String result = "";try {result = client.get(String.class, url, queryParam, headers);System.out.println(result);//使用jsonpath取出响应数据中的bookName值List<String> bookNames = JsonPath.read(result, "$.data.[*].bookName");return CommonResponse.successInstance(bookNames);//这个return返回来的值就是个json字符串,可以用jsonpath获取了client.close();}return CommonResponse.errorInstance(result);}

我们来在浏览器输入URL请求,已经成功提取到了这个bookName值
在这里插入图片描述
接下来,我们先看下下一个接口/getBookByBookName在Controler层的代码

 /*** 根据书的名称获取书籍信息* @param bookName* @return*/@GetMapping("/getBookByBookName/{bookName}")@ResponseBodypublic CommonResponse<Book> getBookByBookName(@PathVariable String bookName){Book bName =   bookService.getBookByBookName(bookName);CommonResponse response = CommonResponse.successInstance(bName);return response;}

代码解释

  • @PathVariable String bookName @PathVariable是取url中的变量 ,会自动进行赋值拼接在URL后面

将bookName作为getBookByBookName`接口的请求参数,代码如下

 String result = "";try {result = client.get(String.class, url, queryParam, headers);System.out.println(result);//使用jsonpath取出响应数据中的bookName值List<String> bookNames = JsonPath.read(result, "$.data.[*].bookName");String bookName = "";
//            for (String str : bookNames) {
//                bookName = str; 这种遍历我注视掉了 每遍历一次书名就走一次请求 而且遍历出来的书名都不一样
//            }String urls = "http://localhost:9527/getBookByBookName";HttpClientUtils htp = new HttpClientUtils(null);Map<String, String> header = new HashMap<>();headers.put("Content-Type", "application/x-www-form-urlencoded");Map<String, String> param = new HashMap<>();param.put("bookName",  bookNames.get(0));String res = "";try {//将jsonpath取出的bookName作为请求参数res = client.get(String.class, urls, param, header);System.out.println(res);} catch (Exception e) {e.printStackTrace();}return CommonResponse.successInstance(bookNames);//这个return返回来的值就是个json字符串,可以用jsonpath获取了} catch (Exception e) {e.printStackTrace();} finally {client.close();}return CommonResponse.errorInstance(result);}

最后我们在浏览器输入URL请求,已经成功返回了第二个接口的返回值
在这里插入图片描述
到此就大功告成,完成了HttpClient+JsonPath提取响应值作为多个接口请求参数,解决多业务依赖关联

http://www.yayakq.cn/news/608313/

相关文章:

  • 免费扑克网站网站建设费如何入账怎么摊销
  • 网站效果图可以做动态的嘛智慧云建筑信息平台
  • 福州网站建设的公司哪家好东南亚购物网站排名
  • 网站建设全网营销手机设计软件有哪些
  • 怎么备份网站模板dw网站怎么做点击图片放大
  • 常州做网站基本流程免费网站安全软件大全免费下载安装
  • 昆明做网站公司湖北网站排名优化
  • 在线课堂手机网站模板3d建模软件手机版
  • 团购商城网站建设方案网络推广视频
  • sns社交网站 建设文档专业app网站建设哪家好
  • 云南昆明网站建设公司成都网站开发技术
  • 做网站页面该建多大的画布企业网站建设工作总结
  • 厦门市建设协会网站网站开发看谁的教程
  • 主题 外贸网站 模板下载seo关键词优化价格
  • 南宁市有哪些做网站的外包企业上海工程项目查询
  • 网站建设 翰臣科技重庆seo网站策划
  • 重庆网站建设首选承越学院网站建设项目概述
  • 做网站用什么配置的vps重庆律师网站建设
  • 商贸公司网站模板做网站备案的问题
  • 网站推广代理免费晋江网站建设
  • 上海 餐饮网站建设做网站和c 哪个好
  • 广州网站平台怎么做网站开发产生的材料
  • 在国内可以做国外的网站吗南昌网站建设方案推广
  • 射阳做网站的公司中国国家人事人才培训网证书查询
  • wordpress 页面归类手机网站怎么做seo
  • 深圳网站推广优住房及城乡建设部信息中心网站
  • 制作一个简单的php网站二级学院网站建设自评报告
  • 厦门网站流量优化价格防止入侵网站
  • 唐河县住房和城乡建设局网站网站建设与管理自简历
  • 芜湖网站建设推广wordpress doaction