次の方法で共有


パッケージの内容

V3 API を使用して任意のパッケージの内容 (.nupkg ファイル) をフェッチする URL を生成できます。 パッケージの内容のフェッチに使用されるリソースは、サービス インデックス内にある PackageBaseAddress リソースです。 このリソースを使用すると、リストに含まれているかどうかを問わずパッケージのすべてのバージョンの検出も可能になります。

このリソースは、通常、"パッケージ ベース アドレス" または "フラット コンテナー" と呼ばれます。

バージョン管理

次の @type 値が使用されます。

@type 値 メモ
PackageBaseAddress/3.0.0 初期リリース

ベース URL

次の API のベース URL は、前述のリソースの @type 値に関連付けられている @id プロパティの値です。 次のドキュメントでは、プレースホルダーのベース URL {@id} が使用されます。 ベース URL は、パッケージ ソース内の実装またはインフラストラクチャの変更に基づいて変化する可能性があるため、クライアント ソフトウェアによってサービス インデックスから動的にフェッチする必要があります。

HTTP メソッド

パッケージ内容リソースにあるすべての URL は、HTTP メソッド GETHEAD をサポートしています。

パッケージのバージョンの列挙

クライアントがパッケージ 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_IDLOWER_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_IDLOWER_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>