【分享】ThinkPMS API 框架

浏览:3127 发布日期:2019/10/24 分类:ThinkPHP6专区 关键字: thinkpms api api框架
一款基于 ThinkPHP-6.0.0RC4 核心,进行魔改的API框架,精简了大量的代码和结构。
其整体响应速度与 REQ 都大大提升二倍多以上,是一款只为API接口服务的框架。

1、取消 View 视图,只为API应用而作;

2、取消 Route 路由,改为 子域名绑定 支持短路由,根域名访问不在有绑定或其他路由功能;
根域名访问:http://www.sycit.cn/模块/控制器/操作,或 http://www.sycit.cn/?s=模块/控制器/操作;
子域名绑定:http://demo.sycit.cn/a/abcdef0123 // 绑定到类 'a/:name' => '\app\demo\controller\Index?name=:name',
且支持隐式参数,每个子域名一个 route 配置

3、取消页面APP_TRACE,增加 DevelopDebug::class(开发者调试中间件),在开启:APP_DEBUG = true 与打开 开发者调试中间件,响应格式为:
    {
      // 正常响应状态码为 0,大于 0 错误 会输出 "message" 提示 且支持多语言
      "status":0,
      // 数据
      "data":null,
      // 调试信息
      "debug":
        {
          "基本":
            {
              "1":"请求信息: 2019-10-24 15:26:19 HTTP\/1.1 GET : http:\/\/www.sycit.cn\/",
              "2":"运行时间: 0.033911s",
              "3":"吞 吐 率: 29.49req\/s",
              "4":"内存消耗: 1,016.87kb",
              "5":"文件加载: 63",
              "6":"查询信息: 0 queries",
              "7":"缓存信息: 0 reads,0 writes"
            }
        }
    }
    

4、精简 app.php 应用配置,在 App::class 初始化时,只导入 app.php、database.php 两个配置文件,其余均在使用时独立导入;
如 lang.php、session.php、trace.php 在开启中间件时初始化导入配置,
需注意的是,在默认 $this->app->config->get(), 只能获取 app、database 两个配置,
其余配置获取均在 各自模块中,如读取 多语言配置: $this->app->lang->config() // 需开启多语言中间件

5、精简优化 Response::class 响应输出,默认为 json, 可以在 app.php 配置中 'auto_response_type' 设置自动响应输出格式,
其根据 后缀名自动响应,如无指定则响应默认json,也可指定格式 $this->app->setResponse('\\app\\library\\xml')

6、增加 Annotation::class 注解类管理,支持 class 类注解、 action 方法注解, 注解类解释顺序为 class=>action, action注解合并class注解;
格式为:如获取的注解参数为空则抛出 错误,返回{$apiCode = 4000, $code = 200},支持数据类型验证 Validate::is()

    // 必须 以 /** 开头,以 */ 结尾
    /**
     * @Desc 默认控制器
     * @Url GET|POST
     * @Input string $username {10} default="www.sycit.cn" desc="用户名称"
     * @Input email $password {10,16} default="hyzwd@outlook.com" desc="用户密码"
     * @Input email $email {8,} default="hyzwd@outlook.com" desc="用户邮箱"
     * @Middleware("\\app\\library\\middleware")
     */
     
     // 支持的参数有 @Desc 描述 、 @Url URL 请求类型 、 @Input 请求参数 、 @Middleware("中间件"),首字符必须大写,非支持参数不会获取也不会影响
     
     // @Input 中 
     // email 有效格式(参考 Validate::is() 且支持自定),且email名称必须 [A-Za-z0-9\-_],
     // $username 请求参数 (由 $ 符号指定),
     // {10} 长度10位、{10,16} 长度10-16区间、 {8,} 长度 8位起,
     // default="默认值",  
     // desc="描述"
     
     // 必须双引号
     

注解类管理的 目的是为以后 增加 自动接口文档说明。

7、大量精简 Request::class 请求管理类
获取 单个/多个 参数: $this->request->get($name = string|array, $default = array|bool),默认 null 抛出 4004 错误
获取指定的参数: $this->request->only(['username','password'], 数据类型如:cookie|post|get|request..., 默认参数值 string|array, 过滤规则 string|array)
获取原始数据:$this->request->data('username')
其余方法详细的可以看 Request 源码

8、取消了 控制器中间件 方法,

9、大量精简优化了 Validate::class,如需要可自主继承扩展,在 provider.php 容器管理中 引入。详细可阅读源码

10、DB 类 就跟 TP6.0 的没区别了, 缓存暂时只支持 DB。


其余的 功能 可以详细阅读源码,控制台 暂时没做更改,说实话,这框架更改是从 5.0 开始的,后来出现 6.0版本后,又重新进行魔改,也花费了大量的个人时间吧。

文档说明暂时 没开写,感兴趣的朋友请多多理解下。

后续的框架进度应该是这样的:

1、尽量减少框架臃肿,也会做大量的代码优化,减少第三方类;
2、全方面引用 Redis 管理
3、log 日志类 更改 SeasLog 高性能日志系统;
4、session 改为 redis 驱动,精简现有功能,也可能只支持 redis 管理;
5、cache 改为 redis 缓存,DB 缓存暂时没详细阅读源码;
6、增加接口参数白名单、全局参数等
7、增加接口版本管理,考虑从 header 获取版本号;
8、增加权限管理验证、JWT(适用于表单 token)
9、完善文档说明。
.....

安装方式:// 目前版本号:V1.1.1

// 如链接速度慢,可更换 composer 源
# composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

// 第一次安装
# composer create-project sycit/thinkpms

// 核心更新,在 应用跟模块下
# composer update sycit/framework
2019-10-24 第一次提交,或许会有BUG,还请感兴趣的朋友多提提意见。

网站:http://www.sycit.cn (网站备案中,内容还没丰富)
邮箱:hyzwd@outlook.com
QQ: 508907000

最佳答案
评论( 相关
后面还有条评论,点击查看>>