工件管理系统为 JFrog Artifactory Pro X 。
根据我在REST API的Jenkins作业中的REST API of JFrog,我尝试获取特定软件包的最新工件版本,在这种情况下,id为“ MyLib”。
我的NuGet包存储在这里:https://artifactory.myserver.net/artifactory/api/storage/projectx-nuget/MyLib/MyLib.1.0.0.nupkg?properties=nuget.version
,这将导致以下JSON响应:
{
"properties" : {
"nuget.version" : [ "1.0.0" ]
},
"uri" : "https://artifactory.myserver.net/artifactory/api/storage/projectx-nuget/MyLib/MyLib.1.0.0.nupkg"
}
也具有以下URL:https://artifactory.myserver.net/artifactory/api/storage/projectx-nuget/MyLib/MyLib.1.0.0.nupkg?properties=nuget.id
我得到有效的JSON响应:
{
"properties" : {
"nuget.id" : [ "MyLib" ]
},
"uri" : "https://artifactory.myserver.net/artifactory/api/storage/projectx-nuget/MyLib/MyLib.1.0.0.nupkg"
}
我尝试使用以下URL https://artifactory.myserver.net/artifactory/api/versions/_any/_any?nuget.id=MyLib
,但得到
{
"errors" : [ {
"status" : 404,
"message" : "Not Found"
} ]
}
基于属性“ nuget.id”获取最新版本的正确URL是什么?
答案 0 :(得分:0)
根据doc artifactory / api / versions:在“ version”属性中搜索具有最新值的工件。仅返回具有明确定义的“版本”属性的工件。
在您的情况下,您没有设置“版本”属性(我想),而只有“ nuget.version”,该属性是在建立索引期间从nuget包中提取的元数据。
只需在软件包上设置一个“版本”属性,REST调用便会起作用。
您可以通过使用人工制品中的用户插件来自动执行此操作,该插件将在编写软件包后设置“版本”属性。
另一种不需要用户插件的解决方案是将本机nuget api与nuget v3 api一起使用:
https://artifactory.myserver.net/artifactory/api/nuget/v3/projectx-nuget/query?q= MyLib&prerelease = false
将为您提供最新版本的json响应(以及doc https://docs.microsoft.com/fr-fr/nuget/api/search-query-service-resource中提到的其他版本的列表:“搜索结果对象中包含的元数据取自最新的程序包版本。版本数组是一个JSON对象“)