mitchdav / laravel-versioned-api
这是一个使用Laravel 5.3、Doctrine 2、Dingo 1.0和JWT 0.5进行版本化API操作的基本入门框架。
Requires
- php: >=5.6.4
- dingo/api: 1.0.x@dev
- laravel-doctrine/orm: 1.2.*
- laravel/framework: 5.3.*
- tymon/jwt-auth: 0.5.*
Requires (Dev)
- fzaninotto/faker: ~1.4
- mockery/mockery: 0.9.*
- phpunit/phpunit: ~4.0
- symfony/css-selector: 2.8.*|3.0.*
- symfony/dom-crawler: 2.8.*|3.0.*
This package is auto-updated.
Last update: 2023-08-24 13:24:41 UTC
README
这是一个针对Laravel框架的骨架,负责设置新的项目与Doctrine、Dingo和JWT整合。安装后,您将拥有一个工作的REST API,它可以响应相同API的3个不同版本的请求,并且已内置了认证功能。
要求
- PHP >= 5.6.4
- 数据库(MySQL或其他Laravel和Doctrine支持的数据库)
- Composer.
依赖
您有两种方式来设置框架
-
使用Composer的create-project命令,在终端中运行以下命令
composer create-project mitchdav/laravel-versioned-api
-
或者手动克隆仓库,在终端中运行以下命令
git clone https://github.com/mitchdav/laravel-versioned-api.git cd laravel-versioned-api composer install php -r "copy('.env.example', '.env');" php artisan key:generate php artisan jwt:generate
这将设置项目的依赖项,但您仍然需要设置数据库。您必须首先创建一个MySQL数据库,然后将详细信息存储在.env文件中,如下所示
DB_DATABASE=mydatabase
DB_USERNAME=root
DB_PASSWORD=
然后,我们使用Doctrine的帮助命令来构建我们的模式和代理。
php artisan doctrine:schema:create
php artisan doctrine:generate:proxies
系统现在已准备好接收对其的请求,但我们没有用户登录API。要生成测试用户,请运行以下命令
php artisan db:seed
这将输出可以用于登录的电子邮件地址和密码。
登录
向/auth/authenticate
发送POST请求,将Content-Type
设置为application/json
。JSON结构应如下所示
{
"email": "{email address from previous command}",
"password": "{password from previous command}"
}
如果响应成功,您将收到一个令牌,您可以使用它向服务器发送后续请求,同时保持给定的用户认证状态。要发送令牌值,请将其作为以下方式发送在Authorization
头中
Authorization: Bearer {token}
要获取用户详情,向/auth/me
发送GET请求,您将收到类似于以下请求的结果
{
"id": 1,
"email": "theodora39@example.net",
"name": "Dillon Effertz",
"job": "Roofer"
}
有关向服务器发送请求的更多信息,请查看Dingo API Wiki。
开发服务器
在修改实体时,您需要为您的实体生成代理,以便系统可以快速响应每个请求。为此,请在终端中运行以下命令
php artisan doctrine:generate:proxies
除非您修改了实体,否则此步骤不是必需的,因为它们的代理已经生成并提交。
如果对实体的更改修改了其数据库结构,您可以通过在终端中运行以下命令将其持久化到数据库中
php artisan doctrine:schema:update
路由
您可以通过查看 路由文件 来获取您版本的路线。
添加新版本
重要的文件都包含在 app/API
文件夹中。项目有相同 API 的 3 个不同版本,设计得非常简单,以便尽可能地进行扩展。
当您想添加新版本时,需要遵循以下流程
-
将整个上一个版本的文件夹复制到
app/API
文件夹中,并给它一个合适的名称(例如,将app/API/V3
文件夹复制到app/API/V4
) -
进行搜索和替换操作,以更新文件夹中的引用从上一个版本到新版本(例如,在
V4
文件夹中将所有V3
实例更新为V4
) -
将上一个版本中存在的路由复制到新版本的路由文件中
-
更新
config/api.php
文件,在auth
部分包含新版本 -
更新
.env
文件的API_VERSION
变量为新版本 -
对 API 的新版本进行更改(例如,添加新实体,或在现有实体中添加字段)
-
运行以下命令以更新数据库模式和代理
php artisan doctrine:generate:proxies php artisan doctrine:schema:update
-
将路由添加到路由文件中的任何新端点
移除版本
要移除版本,请按照以下流程操作
- 从
app/API
文件夹中删除版本的文件夹 - 从路由文件中删除已删除版本的路线
- 从
config/api.php
文件中删除auth
条目 - 检查
.env
文件的API_VERSION
变量是否未设置为已删除的版本