<?php
|
echo <<<EOT
|
<!DOCTYPE html>
|
<html lang="en">
|
<head>
|
<meta charset="utf-8">
|
<title>{$service} - 在线接口文档 - {$projectName}</title>
|
|
<link rel="stylesheet" href="https://staticfile.qnssl.com/semantic-ui/2.1.6/semantic.min.css">
|
<link rel="stylesheet" href="https://staticfile.qnssl.com/semantic-ui/2.1.6/components/table.min.css">
|
<link rel="stylesheet" href="https://staticfile.qnssl.com/semantic-ui/2.1.6/components/container.min.css">
|
<link rel="stylesheet" href="https://staticfile.qnssl.com/semantic-ui/2.1.6/components/message.min.css">
|
<link rel="stylesheet" href="https://staticfile.qnssl.com/semantic-ui/2.1.6/components/label.min.css">
|
<script src="http://libs.baidu.com/jquery/1.11.3/jquery.min.js"></script>
|
</head>
|
|
<body>
|
|
<br />
|
|
<div class="ui text container" style="max-width: none !important;">
|
<div class="ui floating message">
|
|
EOT;
|
|
echo "<h2 class='ui header'>接口:$service</h2><br/> <span class='ui teal tag label'>$description</span>";
|
|
/**
|
* 接口说明 & 接口参数
|
*/
|
echo <<<EOT
|
<div class="ui raised segment">
|
<span class="ui red ribbon label">接口说明</span>
|
<div class="ui message">
|
<p>{$descComment}</p>
|
</div>
|
</div>
|
<h3>接口参数</h3>
|
<table class="ui red celled striped table" >
|
<thead>
|
<tr><th>参数名字</th><th>类型</th><th>是否必须</th><th>默认值</th><th>其他</th><th>说明</th></tr>
|
</thead>
|
<tbody>
|
EOT;
|
|
$typeMaps = array(
|
'string' => '字符串',
|
'int' => '整型',
|
'float' => '浮点型',
|
'boolean' => '布尔型',
|
'date' => '日期',
|
'array' => '数组',
|
'fixed' => '固定值',
|
'enum' => '枚举类型',
|
'object' => '对象',
|
);
|
|
foreach ($rules as $key => $rule) {
|
$name = $rule['name'];
|
if (!isset($rule['type'])) {
|
$rule['type'] = 'string';
|
}
|
$type = isset($typeMaps[$rule['type']]) ? $typeMaps[$rule['type']] : $rule['type'];
|
$require = isset($rule['require']) && $rule['require'] ? '<font color="red">必须</font>' : '可选';
|
$default = isset($rule['default']) ? $rule['default'] : '';
|
if ($default === NULL) {
|
$default = 'NULL';
|
} else if (is_array($default)) {
|
$default = json_encode($default);
|
} else if (!is_string($default)) {
|
$default = var_export($default, true);
|
}
|
|
$other = array();
|
if (isset($rule['min'])) {
|
$other[] = '最小:' . $rule['min'];
|
}
|
if (isset($rule['max'])) {
|
$other[] = '最大:' . $rule['max'];
|
}
|
if (isset($rule['range'])) {
|
$other[] = '范围:' . implode('/', $rule['range']);
|
}
|
if (isset($rule['source'])) {
|
$other[] = '数据源:' . strtoupper($rule['source']);
|
}
|
$other = implode(';', $other);
|
|
$desc = isset($rule['desc']) ? trim($rule['desc']) : '';
|
|
echo "<tr><td>$name</td><td>$type</td><td>$require</td><td>$default</td><td>$other</td><td>$desc</td></tr>\n";
|
}
|
|
/**
|
* 返回结果
|
*/
|
echo <<<EOT
|
</tbody>
|
</table>
|
<h3>返回结果</h3>
|
<table class="ui green celled striped table" >
|
<thead>
|
<tr><th>返回字段</th><th>类型</th><th>说明</th></tr>
|
</thead>
|
<tbody>
|
EOT;
|
|
foreach ($returns as $item) {
|
$name = $item[1];
|
$type = isset($typeMaps[$item[0]]) ? $typeMaps[$item[0]] : $item[0];
|
$detail = $item[2];
|
|
echo "<tr><td>$name</td><td>$type</td><td>$detail</td></tr>";
|
}
|
|
echo <<<EOT
|
</tbody>
|
</table>
|
EOT;
|
|
/**
|
* 异常情况
|
*/
|
if (!empty($exceptions)) {
|
echo <<<EOT
|
<h3>异常情况</h3>
|
<table class="ui red celled striped table" >
|
<thead>
|
<tr><th>错误码</th><th>错误描述信息</th>
|
</thead>
|
<tbody>
|
EOT;
|
|
foreach ($exceptions as $exItem) {
|
$exCode = $exItem[0];
|
$exMsg = isset($exItem[1]) ? $exItem[1] : '';
|
echo "<tr><td>$exCode</td><td>$exMsg</td></tr>";
|
}
|
|
echo <<<EOT
|
</tbody>
|
</table>
|
EOT;
|
}
|
|
/**
|
* 返回结果
|
*/
|
echo <<<EOT
|
<h3>
|
请求模拟
|
</h3>
|
EOT;
|
|
|
echo <<<EOT
|
<table class="ui green celled striped table" >
|
<thead>
|
<tr><th>参数</th><th>是否必填</th><th>值</th></tr>
|
</thead>
|
<tbody id="params">
|
<tr>
|
<td>service</td>
|
<td><font color="red">必须</font></td>
|
<td><input name="service" value="{$service}" style="width:100%;" class="C_input" /></td>
|
</tr>
|
EOT;
|
foreach ($rules as $key => $rule){
|
$name = $rule['name'];
|
$require = isset($rule['require']) && $rule['require'] ? '<font color="red">必须</font>' : '可选';
|
$default = isset($rule['default']) ? $rule['default'] : '';
|
$desc = isset($rule['desc']) ? trim($rule['desc']) : '';
|
$inputType = (isset($rule['type']) && $rule['type'] == 'file') ? 'file' : 'text';
|
echo <<<EOT
|
<tr>
|
<td>{$name}</td>
|
<td>{$require}</td>
|
<td><input name="{$name}" value="{$default}" placeholder="{$desc}" style="width:100%;" class="C_input" type="$inputType"/></td>
|
</tr>
|
EOT;
|
}
|
echo <<<EOT
|
</tbody>
|
</table>
|
<div style="display: flex;align-items:center;">
|
<select name="request_type" style="font-size: 14px; padding: 2px;">
|
<option value="POST">POST</option>
|
<option value="GET">GET</option>
|
</select>
|
EOT;
|
$url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']) ? 'https://' : 'http://';
|
$url = $url . (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'localhost');
|
$url .= substr($_SERVER['SCRIPT_NAME'], 0, strrpos($_SERVER['SCRIPT_NAME'], '/') + 1);
|
echo <<<EOT
|
<input name="request_url" value="{$url}" style="width:500px; height:24px; line-height:18px; font-size:13px;position:relative; padding-left:5px;margin-left: 10px"/>
|
<input type="submit" name="submit" value="发送" id="submit" style="font-size:14px;line-height: 20px;margin-left: 10px "/>
|
</div>
|
EOT;
|
|
/**
|
* JSON结果
|
*/
|
echo <<<EOT
|
<div class="ui blue message" id="json_output">
|
</div>
|
EOT;
|
|
/**
|
* 底部
|
*/
|
$version = '孕妇哨';
|
echo <<<EOT
|
<div class="ui blue message">
|
<strong>温馨提示:</strong> 此接口参数列表根据后台代码自动生成,可将 ?service= 改成您需要查询的接口/服务
|
</div>
|
<p>© Powered By {$version}<span id="version_update"></span></p>
|
</div>
|
</div>
|
<script type="text/javascript">
|
function getData() {
|
var data={};
|
$("td input").each(function(index,e) {
|
if ($.trim(e.value)){
|
data[e.name] = e.value;
|
}
|
});
|
return data;
|
}
|
|
$(function(){
|
$("#json_output").hide();
|
$("#submit").on("click",function(){
|
$.ajax({
|
url:$("input[name=request_url]").val(),
|
type:$("select").val(),
|
data:getData(),
|
success:function(res,status,xhr){
|
console.log(xhr);
|
var statu = xhr.status + ' ' + xhr.statusText;
|
var header = xhr.getAllResponseHeaders();
|
var json_text = JSON.stringify(res, null, 4); // 缩进4个空格
|
$("#json_output").html('<pre>' + statu + '<br/>' + header + '<br/>' + json_text + '</pre>');
|
$("#json_output").show();
|
},
|
error:function(error){
|
console.log(error)
|
}
|
})
|
})
|
|
checkLastestVersion();
|
})
|
|
</script>
|
</body>
|
</html>
|
EOT;
|