api-platform 中的 API 版本控制
Posted
技术标签:
【中文标题】api-platform 中的 API 版本控制【英文标题】:API versioning in api-platform 【发布时间】:2022-01-12 15:30:19 【问题描述】:我有一个使用 API 平台 2.6 的 API,并且我的 API 有一些重大更改,所以我确实需要 api/v2,但看起来 api 平台中没有版本控制支持。非常简单的示例是 V1 中不是必需的字段,但在 V2 中是必需的。
【问题讨论】:
【参考方案1】:APIP 建议使用无版本 api 并改用已弃用的 feild 您可以在这里了解更多信息https://api-platform.com/docs/core/deprecations/#deprecating-resources-and-properties-alternative-to-versioning
namespace App\Entity;
use ApiPlatform\Core\Annotation\ApiResource;
#[ApiResource(deprecationReason: "Create a Book instead")]
class Parchment
// ...
你也可以像这样弃用一个字段
namespace App\Entity;
use ApiPlatform\Core\Annotation\ApiProperty;
use ApiPlatform\Core\Annotation\ApiResource;
#[ApiResource]
class Review
// ...
#[ApiProperty(deprecationReason: "Use the rating property instead")]
public $letter;
// ...
【讨论】:
我很确定我会回答这个帖子,但我不明白为什么它消失了 是的,但它不适用于所有情况。如何通过弃用来实施我的问题?假设有一个 $property 以前是可选的,不,我想要与必填字段相同的 $property,考虑到某些客户没有发送它,我不想为他们应用重大更改,只是新客户从现在开始,要使用我的 API 的必须发送 $property。谢谢。 在这种情况下,您可以为每个路径 v1 和 v2 使用验证组,您可以在每个路径中定义自己的验证规则 api-platform.com/docs/core/validation/#using-validation-groups以上是关于api-platform 中的 API 版本控制的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 api-platform 构建 GraphQL API?
如何在 api-platform 中拦截 graphql 请求?
api-platform 可以将 200 返回到 POST 吗?