<button id="gxxDe"><b id="gxxDe"></b></button>

        【分享】ThinkPMS API 框架

        浏览:304 发布日期:2019/12/07 分类: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-12-07 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-12-07 第一次提交,或许会有BUG,还请感兴趣的朋友多提提意见。

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

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