palantir-foundry - 如果我们需要使用 magrite 代理进行两步休息 api 调用?怎么走一样?
问题描述
我需要使用 magrite 代理进行休息 api 调用,但挑战是 api 调用包括两个步骤。
- POST 调用以接收访问令牌
- GET 调用以使用不记名令牌并调用查询
让我知道是否有人可以提供帮助。
解决方案
假设您每次想要获取数据时都会获得一个新的访问令牌,那么过程是:
- 调用获取令牌
- 从响应中提取令牌
- 使用令牌调用以获取数据
马格利特休息插件支持这个!
首选方法
如果您有权编辑 magritte 源,那么有更好的方法,您可以使用 Auth Call Source ( magritte-rest-auth-call-source
) 为所有同步自动执行此过程。源将执行步骤 1 和 2:
type: magritte-rest-v2
sourceMap:
...
my_new_auth_source:
type: magritte-rest-auth-call-source
url: 'https://my-api.com/'
headers:
Authorization: '{%access_token%}'
authCall:
type: magritte-rest-call
method: GET
saveResponse: false
path: /get/access/token
extractor:
- type: magritte-rest-json-extractor
assign:
access_token: /token/json/path
调用将如下所示:
type: rest-source-adapter2
oneFilePerResponse: false
cacheToDisk: false
restCalls:
- type: magritte-rest-call
path: /get/data
method: GET
选择
如果数据和令牌位于不同的域名(即需要不同的来源),或者如果您无法编辑来源,那么这是一种替代方法。但是,最好在源中保留任何标记,因此仅在必要时使用此方法。
您可以在一次同步中进行多个调用,并且在调用之间保留状态,示例可能如下所示:
type: rest-source-adapter2
oneFilePerResponse: false
cacheToDisk: false
restCalls:
- type: magritte-rest-call
path: /get/access/token
method: GET
saveResponse: false
extractor:
- type: magritte-rest-json-extractor
assign:
access_token: /token/json/path
- type: magritte-rest-call
path: /get/data
method: GET
saveResponse: true
parameters:
token: '{%access_token%}'
这种方法的一些陷阱和其他要点:
saveResponse
默认情况下为 true (为了清楚起见,我在第二次调用中将其保留),因此需要在第一次调用中将其显式设置为 false 以避免将令牌保存在输出数据集中!- 如果数据和令牌位于不同的域后面(因此在不同的来源中),您可以添加
source: my_data/token_source
到每个调用中以将它们指向正确的来源。
更多详情
可以在文档中找到更多详细信息,打开 Foundry 文档并搜索REST API Plugin
以找到它。
推荐阅读
- php - 将数据发送到 jquery 以模式显示
- blueprism - 如何在 Blue Prism 的流程编辑器中在 Pointer 和 Link 之间切换
- docker - 删除核心(集合)后如何删除所有字段
- php - 使用 php 从数据库动态创建元标记
- angular - ng-select 获取对象作为选定值
- java - 如何使用 java ews api 将电子邮件标记为已读
- javascript - 如何使用 axios 将图像和数据从客户端发送到 nodejs 服务器
- vba - Word|VBA - Range.Goto - 如何使其正常工作?
- mysql - 在mysql中备份整个数据库
- javascript - 如何使like和addtocart图标切换外观