# API开发---快速开发API通用接口 > 在在真实开发中 ,很多API接口功能都是逻辑非常简单 功能也是相似的 为了开发方便 缩短开发周期 > 很多简单接口都可以通过配置文件来完成 [TOC] 通过实例讲解一下实现过程 ### 首先 在基类中创建一个_empty ~~~ protected $api_config=[]; /** * API默认统一操作方法 * Power: Mikkle * Email:776329498@qq.com * @return array */ public function _empty(){ $action = $this->request->action(); $this->api_config=Config::get("api_{$this->request->controller()}"); if (isset($this->api_config[$action])){ $action_name = $this->api_config[$action]['action_name']; //判断api_config中定义执行的方法是否存在 if( method_exists($this,$action_name)){ return $this->$action_name($action); }else{ return self::showJsonReturnCodeWithOutData(1002); } }else{ return self::showJsonReturnCodeWithOutData(1003,"参数错误"); } } ~~~ ### 其次在基类中创建一个通用的修改方法 ~~~ /** * 通用添加修改处理方法 * Power: Mikkle * Email:776329498@qq.com * @param $action //方法名称 * @return array */ protected function handleEditData($action){ try{ if($this->request->isPost()){ throw new Exception("错误的提交方式"); } if( ! isset($this->api_config[$action]['model_name']) ){ throw new Exception("错误的处理方式"); } $param_list = isset($this->api_config[$action]['param_list']) ? $this->api_config[$action]['param_list'] : false ; $model_name = $this->api_config[$action]['model_name']; $validate_name = isset($this->api_config[$action]['validate_name']) ? $this->api_config[$action]['validate_name'] : false; return $this->editData($param_list,$validate_name,$model_name); }catch (Exception $e){ Log::error($e->getMessage()); return self::showJsonReturnCodeWithOutData(1008,$e->getMessage()); } } ~~~ 当然 更多方法等你创建 加油 也欢迎大家分享你的通用方法 ### 创建指定的Config配置文件 我们在api模块下的extra扩展目录创建指定的config文件即可 在上面的配置中 我是使用这个方法 ~~~ $this->api_config=Config::get("api_{$this->request->controller()}"); ~~~ >[info] 那么我们定义时候的文件名就是api_加上控制器名称 > 假设我们控制器名称是Index 我们就创建api_index的cinfig文件 ~~~ <?php /** * Created by PhpStorm. * Power By Mikkle * Email:776329498@qq.com * Date: 2017/11/3 * Time: 20:27 */ return [ "useredit"=>[ 'action_name' => 'handleEditData', 'param_list'=>[ "address"=>"address/s", "contacts"=>"contacts/s", "jobs"=>"jobs/s", "mobile"=>"mobile/s", "tencent_code"=>"tencent_code/s", ], 'model_name' => "base/PersonnelNode", 'validate_name' => 'base/PersonnelNode.edit', ], ]; ~~~ ### 最后就是创建模型和验证器类即可 ### 接口地址我就不说了 你自己领悟吧 ### 你可以考虑使用Error空控制器 好处 你懂的 ~~~ <?php namespace app\api\controller; /** * Created by PhpStorm. * Power By Mikkle * Email:776329498@qq.com * Date: 2017/10/31 * Time: 20:26 */ use think\Controller; // 空控制器 class Error extends Base { // 空操作 protected $api_config=[]; public function _empty(){ $action = $this->request->action(); $this->api_config=Config::get("api_{$this->request->controller()}"); if (isset($this->config_list[$action])){ $action_name = $this->api_config[$action]['action_name']; //判断api_config中定义执行的方法是否存在 if( method_exists($this,$action_name)){ return $this->$action_name($action); }else{ return self::showJsonReturnCodeWithOutData(1002); } }else{ return self::showJsonReturnCodeWithOutData(1003,"参数错误"); } } } ~~~ ## 本节综述 >[info] 通过空控制器 空方法 加上配置文件 你甚至可以创建没有控制器文件的API接口 > API总是五花八门的 更多脑洞等你填满