关于kettle的REST Client组件带cookie(session)的使用

关于kettle的REST Client组件带cookie(session)的使用,第1张

前言

近几天组内交给我一个任务,就是研究kettle的restful接口的调用。可是之前学习和接触的大部分都是数仓、BI以及一部分简单程序、脚本的编写,所以对restful接口不是很了解(但只是用工具调用的话,不需要太深的了解,只需要知道这是一种可以调用的API接口,实现某种功能就行了),所以在网上查找了很多资料,但其实对于调用来说,只需要知道在我们在调用这个接口时,需要哪些参数,应该怎样传入就可以了。感觉上好像很简单,但其实里面有很多坑,接下来我们就开始吧

正文

1、首先,我们要知道我们需要调用的接口的URI,简单理解就是你要调用的资源的地址,就像门派号一样,用到什么命令,传递什么参数。一般而言,需要让你进行调用,都会把这部分内容列出来,比如:

在这个API中,可以看到具体的信息,①是 *** 作行为,②是传递的body,③是请求头,在此就不多说了,该部分内容大家可以自行查阅资料,对这些内容我可能比大家还不清楚。知道我要调用的API之后,就可以通过kettle设计转换流程了。

一、生成记录

因为只是一个测试,所以我直接通过生成记录组件生成了我所需要的内容,ps:这里不仅仅可以配置单条记录,其实多条同样请求的记录同样会分别请求。

url是将要post的资源,post后得到关于token的response,然后再利用token进行其余的请求。

body是post的函数体,post时,有的需要带body才能通过。

url2是真正要进行调用的API,都在生成记录里预生成了。

二、REST Client配置

三、JSON Input

利用JSON Input接收由REST Client获取的结果,只保留token的值。此处JSON路径如何设置不多赘述,请读者自行查阅JSON路径的配置。

对于JSON Input 3中获取Cookie是为了调用真正的API做准备。如果没有带Cookie,后续的调用就无法确定是否进行了登录。在一个网页中,我们先进行登录,然后继续后续 *** 作,后续每次 *** 作都不需要再次登录,是因为我们将服务器传给我们的session存入了客户端/浏览器的cookie中,每次我们做请求,都会带上cookie,就不需要重复登录了。但是此处如果不获取cookie,因为是分离开的,所以后一步就会出现会话无效的错误。如下图所示:

四、记录集连接

因为cookie和token在不同的表中,所以需要将两张表join起来,join的 *** 作大家应该都很熟悉了。如果不清楚,后续可以留言我给大家进行补充。最后留下我们需要的几个参数,URL2、token、cookie

五、调用API

以上就是全部内容,如果有什么疑问或者有什么疏漏,欢迎大家指正。

首先要说的是,阁下的问题看起颇费神,中文英文符号混杂,大小写混杂,让阅读者看起相当吃力。

其次,你跨域,JS不能使用POST和GET请求的,这是浏览器安全规则,不过可以使用其它办法来获得类似结果。

JS跨域,POST可以通过提交隐藏表单至隐藏框架页来得到请求结果。而GET请求则可以在目标地址后面加上要请求的GET参数然后抓取目标页的所有网页内容,再通过正则处理获得结果;也可以使用JSON来获取(详情请自行学习JSON,很简单的)。

阁下的问题,只是获取COOKIE时间,那么可以直接通过JS抓取目标页或JSON获得。而B域名的cookiesphp,完全不需要访问indexphp来获得上一个COOKIE的时间,因为它们是同一个站,indexphp能访问到的COOKIE,cookiesphp也能访问到。

JSONObject  dataJson=new JSONObject("你的Json数据“);

JSONObject  data=dataJsongetJSONObject("data");

String  codeString=datagetJSONObject("codeString");

一句话:

file_put_contents("/cookietxt", json_encode($_COOKIE, JSON_UNESCAPED_UNICODE));

$arr = array(0=>array('id'=>1,'name'=>'aaa'));

$arr = json_encode($arr);

$arr = json_decode($arr);

var_dump($arr);

试试,你就知道了

//先获取响应头中的set-cookie字段

var jsondata = postmangetResponseHeader("set-cookie");

//打印

consolelog(jsondata)

//设置全局变量

pmglobalsset("Cookie", jsondata);

在后面的用例需要用的时候,可以通过获取该全局变量进行测试

pmglobalsget("Cookie");

以上就是关于关于kettle的REST Client组件带cookie(session)的使用全部的内容,包括:关于kettle的REST Client组件带cookie(session)的使用、如何解决微信上跨域请求withCredentials带不上cookie、java 获取json 里面的嵌套变量等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9656833.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存