<area id="AtpPJ"></area>

          <rt id="AtpPJ"><dd id="AtpPJ"><strong id="AtpPJ"></strong></dd><nav id="AtpPJ"><dt id="AtpPJ"><samp id="AtpPJ"><aside id="AtpPJ"><colgroup id="AtpPJ"></colgroup></aside></samp></dt></nav><audio id="AtpPJ"></audio></rt>
        1. 【分享】ThinkPMS API 框架

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

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

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