从 Nuget.Server 获取 Json 而不是 XML

tra*_*ter 5 .net c# nuget-server .net-core

我已经设置了一个 Nuget.Server 来托管私有 nuget feed。我正在尝试通过 API 访问该提要,但我无法说服它给我 json 而不是 XML。

我的客户端代码如下:

HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var packagesResult = client.GetAsync("http://localhost:61654/nuget/FindPackagesById()?id=\'Moq'").Result;

Console.WriteLine(packagesResult.Content.ReadAsStringAsync().Result);
Run Code Online (Sandbox Code Playgroud)

我已经从 App_Start 检查了格式化程序

GlobalConfiguration.Configuration.Formatters
Run Code Online (Sandbox Code Playgroud)

有四个格式化程序,第一个是 json。

如何让 API 返回 json 而不是 XML?

小智 3

你的代码没有任何问题。但是,您似乎正在调用仅支持 XML 的 Nuget API V2。您可以检查响应内容类型。

Content-Type: application/atom+xml; type=feed; charset=utf-8
Run Code Online (Sandbox Code Playgroud)

如果您想让 API 返回 JSON 而不是 XML,请使用 Nuget API V3。

API 定义: https: //api.nuget.org/v3/index.json

示例: https: //api.nuget.org/v3/registration3/moq/index.json

  • 我正在使用 Nuget.Server (https://github.com/NuGet/NuGet.Server),它仅支持 V2 api。我找不到支持 V3 API 的托管您自己的 nuget 服务器选项。 (3认同)