1. 项目的整体架构
ds 调度Flink.png2. 相当于每次调用接口的时候先登录
用户登录 -------> 返回获取header 头中获取token 然后在通过token 调用其他接口
合理的方法是:
每次登录后将获取到的token 存到redis 中然后其他接口在调用的时候先从redis 获取token(因为token 中有 有效时间的限制) , 如果没有token 的话就 在登录获取token 然后才存入redis中。
@PostMapping("/getRequestToken")
public Result getRequestToken() {
String url = "http://192.168.1.163:12345/dolphinscheduler/login";
MultiValueMap<String, String> paramsMap = new LinkedMultiValueMap<>();
paramsMap.add("userName","wudl");
paramsMap.add("userPassword","admin@123");
ResponseEntity<Result> loginResult = RestTemplateUtils.post(url, paramsMap, Result.class);
Result body1 = loginResult.getBody();
System.out.println("abcd==="+loginResult.getHeaders());
System.out.println("dsfsdfs"+body1.toString());
System.out.println("11122======"+loginResult.getHeaders().get("Set-Cookie").get(0));
String abc = body1.getData().toString().split("=")[1];
System.out.println("sdfsdfs222========"+abc.substring(0,36));
System.out.println("------------------------------------------------------------------");
String urltoken = "http://192.168.1.163:12345/dolphinscheduler/projects/test-flink/executors/execute";
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.add(HttpHeaders.COOKIE,loginResult.getHeaders().get("Set-Cookie").get(0));
//头部类型
requestHeaders.add("Content-Type", "application/json");
//头部类型
requestHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
MultiValueMap<String, Object> requestBody = new LinkedMultiValueMap<>();
requestBody.add("executeType","REPEAT_RUNNING");
requestBody.add("processInstanceId",10);
requestBody.add("projectName","test-flink");
HttpEntity<MultiValueMap> requestEntity = new HttpEntity<MultiValueMap>(requestBody, requestHeaders);
ResponseEntity<Result> resultResponseEntity = RestTemplateUtils.post(urltoken, requestEntity, Result.class,requestBody);
return resultResponseEntity.getBody();
}
3. 获取token 的方法
loginResult.getHeaders().get("Set-Cookie").get(0))
在传入headers中就可以了 公共方法在上一篇博客中有。
网友评论