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 的 JSON

api-platform 可以将 200 返回到 POST 吗?

如何在 Api-Platform 中为虚拟属性引入过滤功能?

isGranted 为登录的用户 JWT 返回 false - Symfony API-Platform AWS-EB