# 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文件
~~~
/**
* 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空控制器
好处 你懂的
~~~
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总是五花八门的 更多脑洞等你填满