我是艺术工厂的新人。目前,我正在进行一个项目,以列出存储库中的所有工件。
Artifactory版本:4.1.3 Pro (已关闭证书验证)
curl -u uname:password -X POST -k https://artifactory.xxxx.com/artifactory/api/search/aql -d "items.find({"repo":"war"}).include("name","repo","path","size").sort({"$desc":["size"]}).limit(10)"
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /artifactory/api/search/aql was not found on this server.</p>
<hr>
<address>Apache/2.2.31 (Amazon) Server at artifactory.xxxx.com Port 443</address>
</body></html>它抛出了一个错误(错误的请求)。尝试列出以下repos war、war-dev、war-release、webapp、webapp-dev中的工件(从Artifactory数据库和http请求中获取repos列表)。
我试图匿名列出使用REST调用的工件,但$ARTIFACTORY_HOME/logs/request_trace.log $ARTIFACTORY_HOME/logs/request.log中没有日志
从artdb(Artifactory数据库)和artifactory url获取repos列表。列出的回购不同。哪一个是正确的?
列出了这么多回购
mysql> select distinct(repo) from nodes;
| war |
| war-dev |
| war-release |
https://artifactory.xxxx.com/artifactory/repo/
webapp/
webapp-dev/ 有没有人能帮我找出repo中的文物列表。谢谢!
发布于 2016-04-02 03:59:20
AQL是一种可行的方法。而且您的查询几乎是正确的(您忘记了所有以war或web开头的代码库的$match。问题是卷曲。如果想要在命令行中编写查询字符串,则需要转义所有内部的"和$。以下是工作查询:
curl -u uname:password -X POST -k https://artifactory.xxxx.com/artifactory/api/search/aql -d "items.find({\"type\" : \"file\",\"\$or\":[{\"repo\" : {\"\$match\" : \"war*\"}, \"repo\" : {\"\$match\" : \"web*\"} }]}).include(\"name\",\"repo\",\"path\",\"size\").sort({\"\$desc\": [\"size\"]}).limit(10)"现在,这是地狱。相反,可以考虑在文本文件中编写查询,并使用-d @filename.aql传递它。在这种情况下,您不需要所有的转义,查询将如下所示:
items.find({
"type" : "file",
"$or":[{
"repo" : {"$match" : "war*"},
"repo" : {"$match" : "web*"} }]})
.include("name","repo","path","size")
.sort({"$desc": ["size"]})
.limit(10)发布于 2019-11-15 04:05:16
对我来说,当我使用Content-Type text/plain而不是application/json时,它可以工作。
curl -u uname -X POST http://host:8081/artifactory/api/search/aql -H "content-type: text/plain" -d @filename.aql发布于 2016-04-06 08:22:50
这对我也很有效。您可以按照@JBaruch指定的方式编写命令,也可以运行JSON AQL文件。
curl -u uname -X POST http://host:8081/artifactory/api/search/aql -H "content-type: application/json" -d @filename.aql
https://stackoverflow.com/questions/36345068
复制相似问题