artemijdeleto/api-extensions-bundle

一套用于提升API开发的Symfony扩展

v1.0.0 2022-05-22 16:58 UTC

This package is auto-updated.

Last update: 2024-09-29 06:14:49 UTC


README

一套用于提升API开发的Symfony扩展。目前包括一个主要扩展。

版本回退

通过自动解决已实现的方法,提供更好的开发者体验。

待办事项

  • 专用配置文件
  • 多个API

用例

您的团队曾经发布了一组大量方法,并将其命名为 Store API v1

数月后,您需要更改所需字段的集合或完全更改响应结构。您将(在大多数情况下)将其作为 Store API v2 开发,甚至不触及上一个版本。

好吧,您的团队更改了一些之前创建的方法。那么之前未更改的10、20或100个方法怎么办?将它们复制粘贴到您的 v2 目录中?对于简单的API可能足够,但当您的API正在积极开发时,您可能需要一个更好的选项,例如这个扩展。

算法

TL;DR. 运行时没有执行任何操作,一切都是像大多数应用程序路由一样编译的。

  • 检测最大支持的版本
  • 检索所有路由列表
  • 过滤与API相关的路由
  • 按无版本名称对路由进行分组(版本用占位符替换)
  • 检测第一个实现的版本
  • 通过每个版本进行循环,跳过已实现的路由或复制先前实现的路由

需求

路由命名

警告:仅支持主要版本(格式 v1.1v12.32.1 目前不支持)

您必须为希望由此包支持的路线提供名称。单个路线名称必须遵循以下要求

  • app_ 开头
  • 包含带有定义版本的 _api_v

建议在版本间保持命名一致性。

示例
  • app_products_api_v1_get_products
  • app_api_v1_users_get
  • app_api_v13_user_create

安装

  1. 运行 composer require artemijdeleto/api-extensions-bundle
  2. 转到 src/Kernel.php
  3. 粘贴以下代码片段
<?php

namespace App;

use Deleto\VersioningBundle\Kernel\Kernel as VersioningKernel;

class Kernel extends VersioningKernel
{
}
  1. 在您的 config/services.yaml 中定义 deleto.api.max_version

这就完成了。