diff --git a/application/api.php b/application/api.php index 1245197aa7cf89b085f7ce041d08cf4062a3148a..29b4b3106df0d68a92c175f3a6a60c6936287fa6 100644 --- a/application/api.php +++ b/application/api.php @@ -216,6 +216,7 @@ class api { $method[1] = 'GET'; $method[2] = 'POST'; $method[3] = 'PUT'; + $method[4] = 'DELETE'; return $method_id ? $method[$method_id] : $method; diff --git a/application/common/function/function.php b/application/common/function/function.php index b6b9d5861ba46d5c1de50cea0ce56ce0b6fac435..043596a3994f15e7b664b7782bbae073d575f053 100644 --- a/application/common/function/function.php +++ b/application/common/function/function.php @@ -209,3 +209,82 @@ function id_decode($string) return \gophp\helper\id::decode($string); } + + +/** + * 生成header + * @param array $request + * @return array + */ +function parse_debug_header(array $request) +{ + $data = []; + + foreach ($request['key'] as $index=>$key) { + $data[] = $key.': '.$request['value'][$index]; + } + + return $data; +} + +/** + * 批量解析参数 + * @param array $request + * @return array + */ +function parse_debug_params(array $request) +{ + $data = []; + + foreach ($request['type'] as $index=>$type) { + $key = $request['key'][$index]; + $data[$key] = parse_type_param($type, $request['value'][$index]); + } + return $data; +} + +/** + * 解析参数 + * @param $type + * @param $value + * @return bool|float|int|mixed|null|string + */ +function parse_type_param($type, $value) +{ + if(empty($value)) { + return ''; + } + + switch ($type) { + case 'object': + $value = json_decode($value, true); + break; + case 'array': + $value = json_decode($value, true); + if($value == null) { + $value = []; + } + break; + case 'number': + $value = intval($value); + break; + case 'float': + $value = floatval($value); + break; + case 'double': + $value = floatval($value); + break; + case 'boolean': + $value = boolval($value); + break; + case 'null': + $value = null; + break; + case 'string': + default: + $value = trim(strval($value),' '); + } + + return $value; +} + diff --git a/application/home/controller/debug.php b/application/home/controller/debug.php index 5653473283d64b80910b9a0001a57f7508be4ffe..845f5bc5d32896ec16264565bb1f3da7b1b7b3a1 100644 --- a/application/home/controller/debug.php +++ b/application/home/controller/debug.php @@ -8,51 +8,46 @@ use gophp\curl; use gophp\request; use gophp\response; -class debug extends controller { +class debug extends controller +{ // 获取接口id public function index() { - $api = request::post('api', []); + $api = request::post('api', []); $request = request::post('request', []); + $headers = request::post('header', []); - if(!$url = $api['url']){ - - response::ajax(['code'=> 300, 'msg' => '请求地址不存在']); - + if (!$url = $api['url']) { + response::ajax(['code' => 300, 'msg' => '请求地址不存在']); } - if(!$method = $api['method']){ - - response::ajax(['code'=> 300, 'msg' => '请求方式不存在']); - + if (!$method = $api['method']) { + response::ajax(['code' => 300, 'msg' => '请求方式不存在']); } - $data = []; - - foreach ($request as $k=>$v){ - foreach ($v as $k1=>$v1){ - $data[$request['key'][$k1]] = $v1; - } - } + $headers = parse_debug_header($headers); - $curl = new curl($url, $method, $data); - - if($info = $curl->getInfo()){ + $data = parse_debug_params($request); + $curl = new curl($url, $method, $data, $headers); + if ($info = $curl->getInfo()) { $info = serialize($info); - } - - if($body = $curl->getBody()){ + if ($body = $curl->getBody()) { $body = serialize($body); } - if($header = $curl->getHeader()){ + $err = $curl->getError(); + if ($err['no'] > 0 or $err['code'] != '200') { + $body = serialize($err); + } + + if ($header = $curl->getHeader()) { $header = serialize($header); } - response::ajax(['info' => $info,'header' => $header,'body' => $body]); + response::ajax(['info' => $info, 'header' => $header, 'body' => $body]); } @@ -63,19 +58,19 @@ class debug extends controller { $header = request::post('header', ''); $body = request::post('body', ''); - if($info){ + if ($info) { $this->assign('info', unserialize($info)); } - if($header){ + if ($header) { $this->assign('headers', unserialize($header)); } - if($body){ + if ($body) { $this->assign('body', unserialize($body)); @@ -89,11 +84,11 @@ class debug extends controller { public function __call($name, $arguments) { - $id = id_decode($this->action); + $id = id_decode($this->action); $api = api::get_api_info($id); - if(!$api){ + if (!$api) { $this->error('该接口不存在'); @@ -102,7 +97,7 @@ class debug extends controller { $project = api::get_project_info($id); // 获取项目环境域名 - $envs = json_decode($project['envs'], true); + $envs = json_decode($project['envs'], true); foreach ($envs as $k => $env) { $envs[$k]['name'] = $env['name']; @@ -118,8 +113,7 @@ class debug extends controller { 'url' => url("mock/$encode_id", '', true), ]; - sort($envs); - array_push($envs, $mock); + array_unshift($envs, $mock); // 获取请求参数列表 $request_fields = \app\field::get_field_list($id, 1); diff --git a/application/home/view/debug/detail.html b/application/home/view/debug/detail.html index ea9bc97042bb1462b8943b67f4c7bc11ac0b0311..9589c03b72749dbc6367259277c65488ef57b6b5 100644 --- a/application/home/view/debug/detail.html +++ b/application/home/view/debug/detail.html @@ -77,109 +77,111 @@