mitchdav/laravel-versioned-api

该软件包已被废弃,不再维护。未建议替代包。

这是一个使用Laravel 5.3、Doctrine 2、Dingo 1.0和JWT 0.5进行版本化API操作的基本入门框架。

0.2.0 2016-10-30 04:44 UTC

This package is auto-updated.

Last update: 2023-08-24 13:24:41 UTC


README

这是一个针对Laravel框架的骨架,负责设置新的项目与DoctrineDingoJWT整合。安装后,您将拥有一个工作的REST API,它可以响应相同API的3个不同版本的请求,并且已内置了认证功能。

要求

  • PHP >= 5.6.4
  • 数据库(MySQL或其他Laravel和Doctrine支持的数据库)
  • Composer.

依赖

您有两种方式来设置框架

  1. 使用Composer的create-project命令,在终端中运行以下命令

     composer create-project mitchdav/laravel-versioned-api
    
  2. 或者手动克隆仓库,在终端中运行以下命令

     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 个不同版本,设计得非常简单,以便尽可能地进行扩展。

当您想添加新版本时,需要遵循以下流程

  1. 将整个上一个版本的文件夹复制到 app/API 文件夹中,并给它一个合适的名称(例如,将 app/API/V3 文件夹复制到 app/API/V4

  2. 进行搜索和替换操作,以更新文件夹中的引用从上一个版本到新版本(例如,在 V4 文件夹中将所有 V3 实例更新为 V4

  3. 将上一个版本中存在的路由复制到新版本的路由文件中

  4. 更新 config/api.php 文件,在 auth 部分包含新版本

  5. 更新 .env 文件的 API_VERSION 变量为新版本

  6. 对 API 的新版本进行更改(例如,添加新实体,或在现有实体中添加字段)

  7. 运行以下命令以更新数据库模式和代理

     php artisan doctrine:generate:proxies
     php artisan doctrine:schema:update
    
  8. 将路由添加到路由文件中的任何新端点

移除版本

要移除版本,请按照以下流程操作

  1. app/API 文件夹中删除版本的文件夹
  2. 从路由文件中删除已删除版本的路线
  3. config/api.php 文件中删除 auth 条目
  4. 检查 .env 文件的 API_VERSION 变量是否未设置为已删除的版本