パッケージの内容
V3 API を使用して任意のパッケージの内容 (.nupkg ファイル) をフェッチする URL を生成できます。 パッケージの内容のフェッチに使用されるリソースは、サービス インデックス内にある PackageBaseAddress
リソースです。 このリソースを使用すると、リストに含まれているかどうかを問わずパッケージのすべてのバージョンの検出も可能になります。
このリソースは、通常、"パッケージ ベース アドレス" または "フラット コンテナー" と呼ばれます。
バージョン管理
次の @type
値が使用されます。
@type 値 | メモ |
---|---|
PackageBaseAddress/3.0.0 | 初期リリース |
ベース URL
次の API のベース URL は、前述のリソースの @type
値に関連付けられている @id
プロパティの値です。 次のドキュメントでは、プレースホルダーのベース URL {@id}
が使用されます。 ベース URL は、パッケージ ソース内の実装またはインフラストラクチャの変更に基づいて変化する可能性があるため、クライアント ソフトウェアによってサービス インデックスから動的にフェッチする必要があります。
HTTP メソッド
パッケージ内容リソースにあるすべての URL は、HTTP メソッド GET
と HEAD
をサポートしています。
パッケージのバージョンの列挙
クライアントがパッケージ ID を認識していて、パッケージ ソースが使用可能なパッケージ バージョンを検出する場合、クライアントはすべてのパッケージ バージョンを列挙する予測可能な URL を作成できます。 このリストは、以下に記載したパッケージ内容 API の "ディレクトリ一覧" になっています。
Note
このリストには、リストに含まれるパッケージ バージョンとリストに含まれていないパッケージ バージョンの両方が含まれます。
GET {@id}/{LOWER_ID}/index.json
要求パラメーター
名前 | / | タイプ | 必須 | メモ |
---|---|---|---|---|
LOWER_ID | URL | string | はい | 小文字にしたパッケージ ID |
LOWER_ID
値は、.NET の System.String.ToLowerInvariant()
メソッドによって実装されるルールを使用して小文字化された目的のパッケージ ID です。
回答
指定されたパッケージ ID のバージョンがパッケージ ソースにない場合は、404 状態コードが返されます。
パッケージ ソースに 1 つまたは複数のバージョンがある場合は、200 状態コードが返されます。 応答本文は、次のプロパティを含む JSON オブジェクトです。
名前 | タイプ | 必須 | メモ |
---|---|---|---|
versions | 文字列の配列 | はい | 利用できるバージョン |
versions
配列内の文字列はすべて、小文字化され正規化された NuGet バージョンの文字列です。 バージョン文字列には、SemVer 2.0.0 ビルド メタデータが含まれていません。
この配列内にあるバージョン文字列を、以下のエンドポイントにある LOWER_VERSION
トークンに対してそのまま使用できるようにするためです。
サンプル要求
GET https://api.nuget.org/v3-flatcontainer/owin/index.json
「ベース URL」セクションに記載されているように、サービス インデックスからベース URL (このサンプルの https://api.nuget.org/v3-flatcontainer/
) をフェッチしてください。
サンプル応答
{
"versions": [
"0.5.0",
"0.7.0",
"0.11.0",
"0.12.0",
"0.14.0",
"1.0.0"
]
}
パッケージ内容のダウンロード (.nupkg)
クライアントがパッケージ ID とバージョンを認識していて、パッケージの内容をダウンロードする場合は、次の URL を作成するだけで済みます。
GET {@id}/{LOWER_ID}/{LOWER_VERSION}/{LOWER_ID}.{LOWER_VERSION}.nupkg
要求パラメーター
名前 | / | タイプ | 必須 | メモ |
---|---|---|---|---|
LOWER_ID | URL | string | はい | パッケージ ID (小文字) |
LOWER_VERSION | URL | string | はい | パッケージのバージョン (正規化および小文字化) |
LOWER_ID
と LOWER_VERSION
の両方とも、.NET の次のメソッドによって実装されるルールを使用して小文字化されています。System.String.ToLowerInvariant()
メソッド。
LOWER_VERSION
は NuGet のバージョン正規化規則を使用して正規化された目的のパッケージ バージョンです。 つまり、この場合、SemVer 2.0.0 仕様で許可されているビルド メタデータを除外する必要があります。
応答の本文
パッケージ ソースにパッケージが存在する場合は、200 状態コードが返されます。 応答本文はパッケージ内容自体になります。
パッケージ ソースにパッケージが存在しない場合は、404 状態コードが返されます。
サンプル要求
GET https://api.nuget.org/v3-flatcontainer/newtonsoft.json/9.0.1/newtonsoft.json.9.0.1.nupkg
「ベース URL」セクションに記載されているように、サービス インデックスからベース URL (このサンプルの https://api.nuget.org/v3-flatcontainer/
) をフェッチしてください。
サンプル応答
Newtonsoft.Json 9.0.1 の .nupkg であるバイナリ ストリーム。
パッケージ マニフェストのダウンロード (.nuspec)
クライアントがパッケージ ID とバージョンを認識していて、パッケージ マニフェストをダウンロードする場合は、次の URL を作成するだけで済みます。
GET {@id}/{LOWER_ID}/{LOWER_VERSION}/{LOWER_ID}.nuspec
要求パラメーター
名前 | / | タイプ | 必須 | メモ |
---|---|---|---|---|
LOWER_ID | URL | string | はい | パッケージ ID (小文字) |
LOWER_VERSION | URL | string | はい | パッケージのバージョン (正規化および小文字化) |
LOWER_ID
と LOWER_VERSION
の両方とも、.NET の System.String.ToLowerInvariant()
メソッドによって実装されるルールを使用して小文字化されています。
LOWER_VERSION
は NuGet のバージョン正規化規則を使用して正規化された目的のパッケージ バージョンです。 つまり、この場合、SemVer 2.0.0 仕様で許可されているビルド メタデータを除外する必要があります。
応答の本文
パッケージ ソースにパッケージが存在する場合は、200 状態コードが返されます。 応答本文はパッケージ マニフェストになります。これは、対応する .nupkg に含まれる .nuspec です。 .nuspec は XML ドキュメントです。
パッケージ ソースにパッケージが存在しない場合は、404 状態コードが返されます。
サンプル要求
GET https://api.nuget.org/v3-flatcontainer/newtonsoft.json/6.0.4/newtonsoft.json.nuspec
「ベース URL」セクションに記載されているように、サービス インデックスからベース URL (このサンプルの https://api.nuget.org/v3-flatcontainer/
) をフェッチしてください。
サンプル応答
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>Newtonsoft.Json</id>
<version>6.0.4</version>
<title>Json.NET</title>
<authors>James Newton-King</authors>
<owners>James Newton-King</owners>
<licenseUrl>https://raw.github.com/JamesNK/Newtonsoft.Json/master/LICENSE.md</licenseUrl>
<projectUrl>http://james.newtonking.com/json</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Json.NET is a popular high-performance JSON framework for .NET</description>
<language>en-US</language>
<tags>json</tags>
</metadata>
</package>