magritte REST 配置的完整示例?

Full example of magritte REST config?

我们正在通过 magritte-rest-v2 设置休息集成。

文档涵盖了身份验证和进行 rest 调用,但是没有完整的示例配置,我似乎无法让它工作。

任何人都可以共享工作配置以供参考?我的用例非常简单:令牌身份验证和返回对象的分页列表。

我手头没有分页示例,但这里有一个没有。找到答案后,我会编辑此答案。

type: magritte-rest-v2
sourceMap:
  my_api:
    type: magritte-rest-auth-parameters-source
    url: 'https://api.yourserver.io/foo/bar/'
    parameters:
      api_key: '{{api_key}}'

您需要区分身份验证和寻呼呼叫。身份验证由您的来源定义,您可以将其设置为 fsmf 显示:

type: magritte-rest-v2
sourceMap:
  my_api:
    type: magritte-rest
    headers:
      Authorization: 'Bearer {{token}}'
    url: "https://some-api.com/"

这将确保使用此源对 API 进行的所有调用都将令牌附加为 header。

接下来您需要设置同步,它将负责进行相关端点调用。此处的设置取决于您的端点如何处理分页。在文档中,您会找到同步示例

  • Page-based API
  • Offset-based API
  • Next-Page link-based API

其中涵盖了最常见的分页设置。

这里是一个带有 oauth2 调用的来源示例,用于检索 access_token,然后将其放入 header:

type: magritte-rest-v2
sourceMap:
  auth_source:
    type: magritte-rest
    url: 'https://auth.api.com/'
    timeoutInMinutes: 3
    proxy: 'http://proxy.com'
  data_source:
    type: magritte-rest-auth-call-source
    proxy: 'http://main.api.com/'
    url: 'http://proxy.com'
    headers:
      Authorization: 'Bearer {%token%}'
      Accept: application/json
    authCalls:
      - source: auth_source
        type: magritte-rest-call
        method: POST
        path: connect/token
        headers:
          Authorization: 'Basic {{basic_auth_secret}}'
        formBody:
          username: '{{username}}'
          password: '{{password}}'
          grant_type: password
          scope: customer-api
        extractor:
          - type: magritte-rest-json-extractor
            assign:
              token: /access_token

此配置每页拉回 50 个对象:

type: rest-source-adapter2
restCalls:
  - type: magritte-paging-inc-param-call
    method: GET
    path: search
    paramToIncrease: startAt
    increaseBy: 50
    initValue: 0
    parameters:
      startAt: '{%startAt%}'
    extractor:
      - type: json
        assign:
          issues: /issues
        allowNull: true
    condition:
      type: magritte-rest-non-empty-condition
      var: issues
    maxIterationsAllowed: 4096
cacheToDisk: false
oneFilePerResponse: false

它生成的原始数据集如下所示:

... 其中 response 是完整响应 JSON 并且分页数据在 response.issues.