licenses.nuget.org

理由

随着许可证表达式的引入,出现了一种需求,即需要提供可靠的服务,为单个许可证标识符、异常标识符或许可证表达式提供参考文本。 此服务的另一个要求是具有稳定的 URL 架构,该架构不易受链接失效的影响,因此我们可以安全地使用它来为旧客户端提供后向兼容性。

Licenses.nuget.org 满足这一要求。 Nuget.org 使用它为使用许可证表达式指定其许可证的包提供许可证文本引用。 nuget pack 或与其他客户端工具打包,将 licenseUrl 元素设置为指向 licenses.nuget.org,以提供与不支持 license 元素的旧客户端的后向兼容性。

许可证和异常文本

从 SPDX 项目的许可证列表数据存储库复制 licenses.nuget.org 上显示的许可证和许可证异常信息。 信息显示的格式与 SPDX 网站本身使用的格式密切相关,例如,在 licenses.nuget.org 上查看 MIT,并在 SPDX.org 上查看 MIT

未经开放源代码计划或免费软件基金会批准的许可证不在 licenses.nuget.org 上托管,也不包括在内。

除了纯文本外,还使用多个样式来显示许可证。 根据 SPDX 许可证列表数据常见问题,红色文本视为可替换文本,蓝色文本视为不可变文本。 有关 SPDX 许可证列表数据的详细信息,请参阅其常见问题SPDX 许可证模板规范

请注意,数据从 SPDX 复制到临时 nuget.org licenses.nuget.org。 如果许可证标识符已获开放源代码计划或免费软件基金会批准,但未出现在 licenses.nuget.org,请报告问题,nuget.org 团队将使用 SPDX 的最新数据更新 licenses.nuget.org 和 nuget.org 软件包上传验证。

如果你作为包作者对 licenses.nuget.org 上提供的共享许可证文本不满意,则可以考虑使用嵌入式许可证文本 (<license type="file">) 而不是 NuGet 包的许可证表达式。 这样就可以完全自定义许可条款,并在包中包含自定义文本。

协议

Licenses.nuget.org 旨在供浏览器中的人查看,不提供机器可读响应。 必须使用 HTTPS 协议,并且期望以某种方式构造请求。 它仅支持 GET 请求。 它接受许可证表达式或许可异常标识符作为输入,方法如下所述。 请注意,许可表达式的所有元素都区分大小写,因此对 licenses.nuget.org 的所有输入也区分大小写。

许可证表达式

请求

许可表达式(包括普通情况下,由单个许可证组成的表达式)必须是 URL 编码的,并在 licenses.nuget.org 的请求中用作路径。

许可证表达式 要使用的 URL
MIT https://licenses.nuget.org/MIT
(MIT) https://licenses.nuget.org/(MIT)
(LGPL 2.0 仅限使用 FLTK-exception 或 Apache-2.0+) https://licenses.nuget.org/(LGPL-2.0-only%20WITH%20FLTK-exception%20OR%20Apache-2.0+)

该服务仅支持 nuget.org 接受的许可证标识符和许可证异常标识符。值得注意的是,这意味着仅接受开放源代码计划或免费软件基金会批准的许可证标识符。 包含不受支持的许可证标识符或许可证异常标识符或不符合许可证表达式语法的所有许可证表达式都视为无效。

响应

Licenses.nuget.org 响应包含有效许可证表达式的请求,其中包含 HTTP 200 状态代码和包含许可证表达式描述的网页:

  • 如果提供的许可证表达式包含单个许可证标识符,则返回包含该许可证引用文本的网页;
  • 如果提供的许可证表达式是复合许可证表达式,则返回包含许可证表达式的网页,其中包含指向各个许可证或许可证异常引用的链接。

任何包含无效许可证表达式的请求都会产生 HTTP 404 响应。

许可证异常

请求

许可证异常标识符必须经过 URL 编码,并在请求中作为路径用于 licenses.nuget.org。只能在单个请求中提供单个许可证异常标识符。 URL 的路径部分中除了许可证异常标识符外,不能出现任何其他字符。

许可证异常标识符 要使用的 URL
FLTK 异常 https://licenses.nuget.org/FLTK-exception
openvpn-openssl 异常 https://licenses.nuget.org/openvpn-openssl-exception

响应

Licenses.nuget.org 响应具有已知许可证异常标识符且具有 HTTP 200 响应的请求以及包含指定许可证异常的引用文本的网页。

任何包含不受支持的许可证异常标识符的请求都会产生 HTTP 404 响应。