海豚PHP扩展api接口开发笔记

海豚PHP是一套很不错的后端开发框架,尤其是其集成的Zbuilder更是让后端开发节省不少时间。波波刚好在最近一个项目中对该框架简单使用了一下,也遇到很多问题。今天记录的是API接口的开发。

海豚PHP尽管是一套基于ThinkPHP5.1开发的一套框架,但是在部分使用方面跟ThinkPHP还是存在不少差异。比如其模块的目录结构。

海豚PHP扩展api接口

通常情况下,ThinkPHP的目录是在模块目录下直接建立controller、module、validate、view即可,但是海豚PHP似乎是为了让用户开发的模块包含前后端,在任意模块目录下均可建立admin目录作为模块后端的控制器。

废话不多说了,每个系统基本上都包含了开发者独特的思路。既然选择了我们还是要按对方的思路进行功能的开发。

为了给前后端分离的项目提供API接口,我直接在cms模块下建立了一个api目录,目录下是我写的控制器,写完以后,把"public"目录下的admin.php复制一份,改名“api.php”。

代码修改部分如下:(原先为admin)

  1. // 定义入口为api
  2. de fine('ENTRANCE', 'api');

同理,index.php文件中也需要增加一行。

  1. // 定义后台入口文件
  2. de fine('ADMIN_FILE', 'admin.php');
  3. de fine('API_FILE', 'api.php');

修改完毕,我们进行访问测试,api.index/模块名/控制器/方法,卧槽,竟然404了!!!

别急!核心操作了!打开“common/behavior/Config.php”,在第90行附近if...else...结构中增加一个api的判断即可。参考代码如下:

  1. // 如果定义了入口为admin,则修改默认的访问控制器层
  2.         if(de fined('ENTRANCE') && ENTRANCE == 'admin') {
  3.             de fine('ADMIN_FILE', substr($base_filestrripos($base_file, '/') + 1));
  4.             if ($module == '') {
  5.                 header("Location: ".$base_file.'/admin', true, 302);exit();
  6.             }
  7.             if (!in_array($module, config('module.default_controller_layer'))) {
  8.                 // 修改默认访问控制器层
  9.                 config('url_controller_layer', 'admin');
  10.                 // 修改视图模板路径
  11.                 config('template.view_path', Env::get('app_path'). $module. '/view/admin/');
  12.             }
  13.             // 插件静态资源目录
  14.             config('template.tpl_replace_string.__PLUGINS__', '/plugins');
  15.         }elseif (de fined('ENTRANCE') && ENTRANCE == 'api'){
  16.             //定义api访问行为
  17.             config('default_return_type', 'json');
  18.             de fine('API_FILE', substr($base_filestrripos($base_file, '/') + 1));
  19.             if ($module == '') {
  20.                 header("Location: " . $base_file . '/api', true, 302);
  21.                 exit();
  22.             }
  23.             if (!in_array($module, config('module.default_controller_layer'))) {
  24.                 // 修改默认访问控制器层
  25.                 config('url_controller_layer', 'api');
  26.             }
  27.             // 插件静态资源目录
  28.             config('view_replace_str.__PLUGINS__', '/plugins');
  29.         } else {
  30.             if ($module == 'admin') {
  31.                 header("Location: ".$base_dir.ADMIN_FILE.'/admin', true, 302);exit();
  32.             }
  33.             if ($module != '' && !in_array($module, config('module.default_controller_layer'))) {
  34.                 // 修改默认访问控制器层
  35.                 config('url_controller_layer', 'home');
  36.             }
  37.         }

修改完毕,再次通过url访问测试。终于OK了。

海豚PHP扩展api接口开发

温馨提示:上述代码中“de fine”字符中间有空格,复制的话记得删除。

你想把广告放到这里吗?

发表评论

您必须 登录 才能发表留言!