原文链接

2024年2月6日 代表crates.io团队的Tobias Bieniek

Cargo和crates.io是在Rust 1.0发布前的紧张开发中被开宣布来的,意图是满意管理依赖项的东西需求以及提供一个人们能够共享代码的注册表。这种快速的工作导致这些东西最初连接的API没有回来正确的HTTP呼应状况码。在Rust 1.0发布后,Rust关于向后兼容性的稳定性确保使得修正这个问题变得不那么简略,因为咱们希望旧版别的Cargo能继续与当前的crates.io API兼容。

当旧版别的Cargo收到一个非“200 OK”的呼应时,它会像这样显现原始的JSON主体:

过错:未能取得200 OK呼应,得到400
头信息:
    HTTP/1.1 400 Bad Request
    Content-Type: application/json; charset=utf-8
    Content-Length: 171
主体:
{"errors":[{"detail":"短少或空的元数据字段:description, license. 请参阅https://doc.rust-lang.org/cargo/reference/manifest.html了解如何上传元数据"}]}

这在拉取恳求#6771中得到了改善,该恳求在2019年中发布的Cargo 1.34中发布。从那时起,Cargo也支撑接收4xx和5xx状况码,而且假如或许的话,从JSON呼应中提取过错信息。

在2024年3月4日,咱们将把API从回来过错的“200 OK”状况码切换到新的4xx/5xx行为。在此更改后,Cargo 1.33及以下版别将继续工作,但会显现原始的JSON主体,而不是格式化杰出的过错信息。咱们信任,这种降级的过错信息显现不会影响许多用户。依据crates.io的恳求日志,只要非常少的恳求是由Cargo 1.33及更早版别宣布的。

以下是此次变更将影响的API端点列表:

  • GET /api/v1/crates
  • PUT /api/v1/crates/new
  • PUT /api/v1/crates/:crate/:version/yank
  • DELETE /api/v1/crates/:crate/:version/unyank
  • GET /api/v1/crates/:crate/owners
  • PUT /api/v1/crates/:crate/owners
  • DELETE /api/v1/crates/:crate/owners

一切其他端点已经运用常规HTTP状况码一段时间了。

假如您仍在运用Cargo 1.33或更早版别,咱们建议您升级到更新版别,以取得改善的过错信息和Cargo团队自那时以来构建的一切其他好东西。