artemijdeleto / api-extensions-bundle
一套用于提升API开发的Symfony扩展
v1.0.0
2022-05-22 16:58 UTC
Requires
- symfony/framework-bundle: ^6.0
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.1
或 v12.32.1
目前不支持)
您必须为希望由此包支持的路线提供名称。单个路线名称必须遵循以下要求
- 以
app_
开头 - 包含带有定义版本的
_api_v
建议在版本间保持命名一致性。
示例
app_products_api_v1_get_products
app_api_v1_users_get
app_api_v13_user_create
安装
- 运行
composer require artemijdeleto/api-extensions-bundle
- 转到
src/Kernel.php
- 粘贴以下代码片段
<?php namespace App; use Deleto\VersioningBundle\Kernel\Kernel as VersioningKernel; class Kernel extends VersioningKernel { }
- 在您的
config/services.yaml
中定义deleto.api.max_version
这就完成了。