You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从JavaScript文件的函数中提取指定API请求参数?

从JS函数返回对象中提取method与url值

需要从JavaScript文件的所有函数中,提取每个函数返回对象内的method值与url值,输出格式为「请求方法, 接口地址」。之前尝试的Shell脚本未实现method与url的配对,无法得到预期结果,以下是解决方法:

示例输入

function getRepoReviewers(gitHost, repoURL) {
     return {
          method: 'GET', headers: "",
          url: `v1/api/code/${gitHost}/reviewers/${repoURL}`
     }
}

function getRepoBranches(gitHost, repoURL) {
     return {
          method: 'GET', headers: "",
          url: `v1/api/code/${gitHost}/branches/${repoURL}`
     }
}

预期输出

GET, v1/api/code/${gitHost}/reviewers/${repoURL}
GET, v1/api/code/${gitHost}/branches/${repoURL}

原脚本问题分析

原脚本仅单独提取了v1、v2开头的URL字符串,未关联对应的method值,也未处理模板字符串的反引号格式,导致无法生成「方法, 地址」的配对输出。

解决方案

方法1:使用awk处理(推荐,支持多行上下文配对)

awk可以跟踪同一个返回对象中的method和url,确保两者正确关联:

# 处理单个JS文件
awk '
/method: '\''/ {
    method = substr($2, 2, length($2)-3)  # 提取单引号包裹的method值
}
/url: `/ {
    url = substr($2, 2, length($2)-2)     # 提取反引号包裹的url值
    print method ", " url
}
' your-js-file.js

如果需要遍历目录下所有JS文件并输出到CSV:

for file in "$1"/*.js; do
    awk '
    /method: '\''/ {
        method = substr($2, 2, length($2)-3)
    }
    /url: `/ {
        url = substr($2, 2, length($2)-2)
        print method ", " url
    }
    ' "$file" >> api_endpoints_bat_api.csv
    echo "" >> api_endpoints_bat_api.csv  # 可选:每个文件后添加空行分隔
done

方法2:使用grep+sed+paste(适用于method与url行严格一一对应)

先分别提取所有method和url值,再通过paste配对:

# 提取所有method值
grep -o "method: '\([^']*\)'" your-js-file.js | sed "s/method: '\([^']*\)'/\1/" > methods.txt
# 提取所有url值
grep -o "url: `\([^`]*\)`" your-js-file.js | sed "s/url: `\([^`]*\)`/\1/" > urls.txt
# 配对输出
paste -d ", " methods.txt urls.txt

内容的提问来源于stack exchange,提问作者Tushar Likhar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 08:40:47