Lumen实例讲解:第一部分

一、前言

  1. 前段时间,有读者建议我出一个 Lumen 项目示例。除了本文之外,整个系列还包含 Lumen实例讲解:第二部分 以及 Lumen实例讲解:第三部分
  2. 同样也要借此机会,介绍一下 Module(模块化) 的代码结构,针对本文,具体的目录层次如下:
/app
....../Base              # 定义基础类
....../Common            # 定义常量、全局函数
....../Middlewares
....../Modules
....../....../Job        # Job模块
....../....../Signature  # Signature模块
....../....../Token      # Token模块
....../....../Task       # Task模块
....../....../User       # User模块
....../Providers
............others............
/bootstrap
/config                  # 配置文件目录
/database
/routes
......others.......
复制代码
  1. 文件树高清图:

二、说明

  1. 还没有书写注释和完整的业务逻辑,所以新手可能理解难度较高,后面在下会慢慢花时间讲解:如何基于 Lumen 开箱即用的队列,优雅地实现 定时任务系统
  2. 项目开发环境使用最新的 Lumen 5.8.x 以及 PHP 7.2.16 版本。
  3. 想要快速上手,可以使用本人至今 'Windows' 下正常开发使用的 整合压缩包

三、开始

  1. 确定本地已经安装了 Composer 环境。并从 代码仓库 克隆了最新的代码。

  2. 注意:git clone 完成后要执行 composer install 安装依赖。

  3. 熟悉 Laravel 的读者应该会习惯使用 php artisan serve 指令快速启动服务,鉴于 Lumen 开箱地精简掉了许多 Artisan 指令,因此本人特意从 Laravel 中提取了 ServeCommand.php 作为 Lumen 项目的扩展,感兴趣的读者可以查看这个 packagist,当然,本文的项目已经默认包含了本扩展。

  4. 具体实现的接口功能如下: 4.1. 添加定时任务接口

     HTTP/1.1 200 OK. POST {{base_url}}/api/task/add
     @请求头部
     Authorization = "de70b9e96776b15"       # (普通管理员)客户端申请的短期Token
     Random-Seed = "fabcdefgsffhhklpoiu"     # (普通管理员)客户端生成数据签名的随机字符串
     Signature = "a54ddf0ccc3f3bffab1f8e"    # (普通管理员)客户端生成的数据签名
     @请求模板: 
     {
         "callback_url": "http://127.0.0.1:8001",
         "callback_header": {
             "Content-Type": "application/json"
         },
         "callback_time": "2019-4-22 16:21:51",
         "task_title": "test task",
         "callback_body": {
             "course_id": 1,
             "lesson_id": 25
         }
     }
     @成功响应: 
     {
         "status_code": 200,
         "data": {
             "task_uuid": "54ddf0cceecac4b3349c3f3bffab1f8e",
             "status": "待执行",
             "task_title": "test task",
             "created_at": "2019-04-30 11:18:20",
             "first_execute": "",
             "success_execute": "",
             "failure_execute": ""
         }
     }
    复制代码

    4.2. 查询定时任务接口

     HTTP/1.1 200 OK. GET {{base_url}}/api/task/seed/{task_uuid}
     task_uuid = "54ddf0cceecac4b3349c3f3bffab1f8e"
     @请求头部
     Authorization = "de70b9b9bf5776b15"       # 客户端申请的短期Token
     @成功响应: 
     {
         "status_code": 200,
         "data": {
             "task_uuid": "54ddf0cceecac4b3349c3f3bffab1f8e",
             "status": "待执行",
             "task_title": "test task",
             "created_at": "2019-04-30 11:18:20",
             "first_execute": "",
             "success_execute": "",
             "failure_execute": ""
         }
    }
    复制代码

    4.3. 定时任务列表接口

     HTTP/1.1 200 OK. GET {{base_url}}/api/task/all
     @请求头部
     Authorization = "de70b996776b15"       # 客户端申请的短期Token
     @成功响应: 
     {
         "status_code": 200,
         "data": {
             "pagination": {
                 "total": 1,
                 "count": 1,
                 "per_page": 10,
                 "current_page": 1,
                 "last_page": 1
             },
             "data": [
                 {
                     "task_uuid": "de70b9b9bf5fb13ff6e96776839ceb15",
                     "status": "待执行",
                     "task_title": "test task",
                     "created_at": "2019-04-30 10:54:27",
                     "first_execute": "",
                     "success_execute": "",
                     "failure_execute": ""
                 }
             ]
         }
     }
    复制代码

    4.4. 删除定时任务接口

     HTTP/1.1 200 OK. GET {{base_url}}/api/task/del/{task_uuid}
     task_uuid = de70b9b9bf5fb13ff6e96776839ceb15
     @请求头部
     Authorization = "de70b96776b15"       # (超级管理员)客户端申请的短期Token
     @成功响应: 
     {
         "status_code": 200,
         "data": true
     }
    复制代码

    4.5. 添加普通管理员接口

     HTTP/1.1 200 OK. POST {{base_url}}/api/user/add
     @请求头部
     Authorization = "de70b976b15"       # (超级管理员)客户端申请的短期Token
     @请求模板: 
     {
         "username": "test",
         "password": "123456",
         "email": "tynadam@qq.com"
     }
     @成功响应: 
     {
         "status_code": 200,
         "data": {
             "user_id": 2,
             "username": "test",
             "email": "tynadam@qq.com",
             "role": "普通管理员",
             "permission": [
                 "1.添加Task",
                 "2.查看Task列表",
                 "3.查询Task",
                 "4.申请短期Token"
             ]
         }
     }
    复制代码

    4.6. 查询管理员接口

     HTTP/1.1 200 OK. GET {{base_url}}/api/task/seek/{user_id}
     user_id = 2
     @请求头部
     Authorization = "de70b776b15"       # (超级管理员)客户端申请的短期Token
     @成功响应: 
     {
         "status_code": 200,
         "data": {
             "user_id": 2,
             "username": "test",
             "email": "tynadam@qq.com",
             "role": "普通管理员",
             "permission": [
                 "1.添加Task",
                 "2.查看Task列表",
                 "3.查询Task",
                 "4.申请短期Token"
             ]
         }
     }
    复制代码

    4.7. 所有管理员列表接口

     HTTP/1.1 200 OK. GET {{base_url}}/api/user/all
     @请求头部
     Authorization = "de70b9b9bf6b15"       # (超级管理员)客户端申请的短期Token
     @成功响应: 
     {
         "status_code": 200,
         "data": {
             "pagination": {
                 "total": 2,
                 "count": 2,
                 "per_page": 10,
                 "current_page": 1,
                 "last_page": 1
             },
             "data": [
                 {
                     "user_id": 1,
                     "username": "AdamTyn",
                     "email": "tynadam@foxmail.com",
                     "role": "超级管理员",
                     "permission": [
                         "1.删除Task",
                         "2.查看Task列表",
                         "3.查询Task",
                         "4.申请短期Token",
                         "4.添加User",
                         "6.查看User列表",
                         "7.查询User",
                         "8.删除User"
                     ]
                 },
                 {
                     "user_id": 2,
                     "username": "test",
                     "email": "tynadam@qq.com",
                     "role": "普通管理员",
                     "permission": [
                         "1.添加Task",
                         "2.查看Task列表",
                         "3.查询Task",
                         "4.申请短期Token"
                     ]
                 }
             ]
         }
     }
    复制代码

    4.8. 删除普通管理员接口

     HTTP/1.1 200 OK. GET {{base_url}}/api/user/del/{user_id}
     user_id = 2
     @请求头部
     Authorization = "de70b9b76b15"       # (超级管理员)客户端申请的短期Token
     @成功响应: 
     {
         "status_code": 200,
         "data": true
     }
    复制代码

    4.9. 获取短期Token接口

     HTTP/1.1 200 OK. GET {{base_url}}/api/auth/token
     @请求模板: 
     {
         "username": "test",
         "password": "123456"
     }
     @成功响应: 
     {
         "status_code": 200,
         "data": {
             "user_id": 1,
             "expired_at": "2019-05-04 18:27:17",
             "token": "1af50bd86c790755bc0a7f9f81f841fe"
         }
     }
    复制代码
  5. 完整功能的所有API列表:

四、结语

  1. 本教程面向新手,还有剩下的 Lumen实例讲解:第二部分 ) 以及 Lumen实例讲解:第三部分 教程会在近期推出。
  2. 随着系统升级,软件更新,以后的配置可能有所变化,在下会第一时间测试并且更新教程;
  3. 欢迎联系在下,讨论建议都可以,之后会发布其它的教程。
  4. 后面紧锣密鼓地将会推出 Laravel业务篇 系列的教程,敬请期待。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值