如何使用cURL调用JFrog Artifactory API检查文件是否存在
用cURL调用JFrog Artifactory API判断指定文件是否存在的方法
前置准备
你需要提前准备以下信息:
- Artifactory实例的访问地址,格式为
https://<你的Artifactory域名>/artifactory - 有权限访问目标仓库的身份凭证,支持用户名+密码、用户名+API密钥、用户名+访问令牌三种形式
- 目标文件的完整访问路径,格式为
<仓库名>/<文件在仓库内的相对路径>,示例:generic-repo/releases/v1.0.0/app.tar.gz
核心cURL请求方法
判断文件存在优先使用HEAD请求,该请求仅返回响应头、不会下载文件内容,执行效率远高于GET请求,命令格式如下:
curl -I -u <用户名>:<身份凭证> https://<你的Artifactory域名>/artifactory/<仓库名>/<文件相对路径>
参数说明:
-I:指定请求方法为HEAD,仅返回HTTP响应头-u:传入身份验证信息
结果判断规则
你可以根据请求返回的HTTP状态码直接判断结果:
- 返回
200 OK:目标文件存在,响应头中同时会返回文件大小、哈希值、最后修改时间等元信息 - 返回
404 Not Found:目标文件不存在,或填写的仓库名称、文件路径有误 - 返回
401 Unauthorized:传入的身份凭证无效,无登录权限 - 返回
403 Forbidden:当前账号没有访问目标仓库或文件路径的权限
Shell脚本化判断示例
如果需要把该逻辑集成到自动化脚本中,可以参考以下写法,直接获取状态码做逻辑判断:
# 替换为你自己的实际信息 ARTIFACTORY_URL="https://artifactory.example.com/artifactory" REPO_NAME="production-repo" TARGET_FILE="v2.3.1/service-package.tar.gz" AUTH_INFO="admin:abc123xyz-api-key" # 发送请求仅获取HTTP状态码 HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" -I -u "$AUTH_INFO" "$ARTIFACTORY_URL/$REPO_NAME/$TARGET_FILE") if [ "$HTTP_CODE" -eq 200 ]; then echo "目标文件存在" elif [ "$HTTP_CODE" -eq 404 ]; then echo "目标文件不存在" else echo "请求异常,状态码:$HTTP_CODE" fi
内容的提问来源于stack exchange,提问作者Sreenivas Reddy
相关产品推荐
相关产品推荐

