如何解析 JSON 响应以构建额外的 Paw 请求?

How to parse a JSON response to build additional Paw request?

https://paw.cloud/

我有以下 JSON 从不同的 API 终点返回:

[
  {
    "id": 1,
    "name": "BigCartel",
    "slug": "bigcartel",
    "logo_cdn_url": "http://placehold.it/200x200",
    "active": true,
    "authentication_type": {
      "description": "Oauth Authentication Token",
      "slug": "oauthauthenticationtoken"
    }
  },
  {
    "id": 2,
    "name": "Lightspeed Retail",
    "slug": "lightspeed_retail",
    "logo_cdn_url": "http://placehold.it/200x200",
    "active": true,
    "authentication_type": {
      "description": "Oauth Authentication Token",
      "slug": "oauthauthenticationtoken"
    }
  }
]

我想解析此 JSON 并将其用于 paws 应用程序的另一部分。有没有人找到这样的例子?我正在尝试自定义 JS 文本,但这似乎是一个死胡同。

解决方案 1:jq

根据他们的网站,"jq is a lightweight and flexible command-line JSON processor"。你可以在 Paw 中进行 jq 查询。我们将使用它从您的最新回复中自动提取字段 ID。

在 URL 字段(您想要 "smart ID" 的位置),右键单击并选择 "jq JSON processor"。

在 "JQ args" 字段中,输入查询(参见 jq tutorial for details on how this works):

.[] | select(.slug == "bigcartel") | .id

在 JSON 输入字段中,右键单击并选择 Response > Response Raw Body。将打开一个弹出窗口,将 "Request" 字段指向您要从中提取响应正文的请求(您的 "list" 请求)。这将自动获取此请求的最新响应的正文。

大功告成!你现在应该有这个设置:

解决方案 2:JavaScript 代码段

Paw 公开 JavaScript 绑定以写入扩展(例如,上面使用的 jq 动态值被写入为扩展)。它还可以用于在请求中嵌入小代码片段。这有助于实现更高级的设置。

右击 URL 字段,您需要在其中插入您的 ID。选择扩展 > JS 脚本。在弹出窗口中,粘贴此代码:

function evaluate(context){
    var request = context.getRequestByName("List");
    var httpExchange = request.getLastExchange();
    var body = JSON.parse(httpExchange.responseBody);
    for (var i = 0; i < body.length; i++) {
        var member = body[i];
        if (member.slug == "bigcartel") {
            return member.id;
        }
    }
    return null;
};

您可以在底部 "API Reference" 部分的 Paw documentation 中找到 Paw 公开的这个 JavaScript API 的文档。