文件名稱 | 版本號 | 作者 | 版本 | |
---|---|---|---|---|
使用客戶端工具調試權限接口 | v0.0.1 | 若布與宮合 | 8416837 | Chrome 83 EOLINKER 客戶端 6.7.0.3 |
說明
- 我們的後臺管理接口往往是有權限的,因此調試時需要傳鑑權參數
- HTTP客戶端工具 1)代碼;2)成品的客戶端軟件;
使用成品的客戶端軟件
準備EOLINKER 客戶端或Postman
操作步驟
先使用瀏覽器訪問接口成功
- 打開Google Chrome瀏覽器,輸入頁面、用戶名稱、用戶密碼,成功登錄頁面
- 按F12,點擊某個導航,瀏覽器開始調接口,如下圖步驟查看接口調用詳情:
使用HTTPClient調用接口
- 打開工具,新建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();
}
}
- 多線程調用成功:
沒開啓限流,因此調用成功。