• <rp id="oySYs"></rp>
    <li id="oySYs"><progress id="oySYs"></progress></li>

    <hgroup id="oySYs"></hgroup>

    <area id="oySYs"><optgroup id="oySYs"><q id="oySYs"></q></optgroup></area><dfn id="oySYs"></dfn>
    1. 【分享】ThinkPMS API 框架

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

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

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