rates.io:API状态码变更

原文链接

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主体:

css 复制代码
错误:未能获得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团队自那时以来构建的所有其他好东西。

相关推荐
TunerT_TQ3 小时前
Valhalla 静态工程审阅 #007|AgentENV 源码证据驱动评测【大厂开源基础设施特辑】
rust·开源·go·github·sandbox·分布式系统·ai基础设施
NutShell Wang4 小时前
Vite 8.1 深度拆解:Rolldown 统一打包器如何终结前端构建的「双引擎时代」
前端·rust·开源·vite·开发者工具·vibe coding
寒水馨4 小时前
macOS下载、安装uv-0.12.0(附安装包uv-aarch64-apple-darwin.tar.gz)
python·macos·rust·项目管理·包管理器·astral·pip替代
寒水馨6 小时前
macOS下载、安装ripgrep-15.2.0(附安装包ripgrep-15.2.0-aarch64-apple-darwin.tar.gz)
macos·正则表达式·rust·ripgrep·rg·命令行搜索·代码搜索
SomeB1oody20 小时前
【RustyML入门】1.0. 快速上手
开发语言·后端·机器学习·rust·教程
骊城英雄20 小时前
Rust从入门到精通-trait
人工智能·算法·rust
花褪残红青杏小21 小时前
Rust图像处理第23节-图像加噪:给每个像素单独掷一次骰子
rust·webassembly·图形学
小杍随笔1 天前
2025年Rust GUI框架实战万字避坑指南
开发语言·后端·rust
在水一缸2 天前
当 AI 编码助手遇上 Rust:深入解析 Zerostack 的极简哲学与实战应用
rust·系统架构·开源项目·轻量化·ai编码助手·zerostack
2401_873479402 天前
风控引擎高并发IP查询方案对比:开源Rust库 vs 商业离线库,怎么选?
tcp/ip·rust·开源·ip