文章目录
文件名称 | 版本号 | 作者 | 版本 | |
---|---|---|---|---|
使用客户端工具调试权限接口 | v0.0.2 | 若布与宫合 | 8416837 | Chrome 83 EOLINKER 客户端 6.7.0.3 |
说明
- 我们的后台管理接口往往是有权限的,因此调试时需要传鉴权参数
- HTTP客户端工具 1)代码;2)成品的客户端软件;
使用成品的客户端软件
准备EOLINKER 客户端或Postman
HTTPClient下载
操作步骤
先使用浏览器访问接口成功|或者用工具访问授权接口获取token成功
- 打开Google Chrome浏览器,输入页面、用户名称、用户密码,成功登录页面
- 按F12,点击某个导航,浏览器开始调接口,如下图步骤查看接口调用详情:
使用HTTPClient调用接口
-
登录接口的验证码的获取:使用Chrome浏览器,打开登录页,按F12,,刷新验证码,观察XHR信息,找到验证码的UUID并记录,之后使用。注意:uuid和验证码配对。
如图:
-
打开工具,新建API请求。拷贝上文的链接
http://localhost/dev-api/system/user/list?pageNum=1&pageSize=10&beginTime=&endTime=&page=1
至工具,执行测试
-
调用失败了,因为接口是有权限的。继续使用客户端工具,按下图步骤执行:
复制的token不能是已过期的
-
填入请求头参数,执行测试,成功了:
-
其它参数类型,使用如图方式:
使用Java代码调试
- Java代码
- 调用逻辑
// 单服务测试
@Test
public void invokeService() {
init();
Map params = new HashMap();
params.put("pageNum", 1);
params.put("pageSize", 50);
params.put("page", 1);
params.put("beginTime", "");
params.put("endTime", "");
HttpRequestConfig httpRequestConfig = HttpRequestConfig.builder()
.parameters(params)
.serviceName("system/user/list")
.build();
httpConsumer.requestService(httpRequestConfig);
}
- 初始化客户端
// 初始化
private void init() {
Map requestHeaders = new HashMap();
// 请求头设置
requestHeaders.put("Authorization", "Bearer d2ffe4f9-ab91-49f4-8ffb-2310b8d8793f");
String url = "http://localhost:8080/"; // 统一入口
this.httpConsumer = (HttpConsumer) AbcFactory.getConsumerInstance(HttpCommonConfig.builder().requestUrl(url)
.customHeader(CustomHeader.builder()
.requestHeaders(requestHeaders)
.build())
.timeoutSeconds(5L)
.requiredAuthen(false)
.build());
}
- 执行,调用成功
10:20:38.573 [main] DEBUG com.abc.def.sdk.role.HttpCommonConsumer - 请求 === http://localhost:8080/system/user/list?pageSize=50&page=1&beginTime=&endTime=&pageNum=1
10:20:38.947 [main] DEBUG com.abc.def.sdk.role.HttpCommonConsumer - 原始响应(字符串) === {"total":2,"rows":[{"searchValue":null,"createBy":"admin",
- 多线程请求
@Test
public void invokeService() {
init();
Map params = new HashMap();
params.put("pageNum", 1);
params.put("pageSize", 50);
params.put("page", 1);
params.put("beginTime", "");
params.put("endTime", "");
HttpRequestConfig httpRequestConfig = HttpRequestConfig.builder()
.parameters(params)
.serviceName("system/user/list")
.build();
final int CYCLE_COUNT = 10;
final CountDownLatch countDownLatch = new CountDownLatch(CYCLE_COUNT);
for (int i = 0; i < CYCLE_COUNT; i++) {
System.out.println("Execution" + i);
// ThreadPoolUtil是线程工具,自己弄,网上大把
ThreadPoolUtil.execute(() -> httpConsumer.requestService(httpRequestConfig));
}
try {
countDownLatch.await(5, TimeUnit.SECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
- 多线程调用成功:
没开启限流,因此调用成功。