mirror of
https://github.com/YMFE/yapi.git
synced 2025-04-18 15:20:25 +08:00
Merge branch 'dev-mock' of gitlab.corp.qunar.com:mfe/yapi into dev-mock
This commit is contained in:
commit
97bc3ae7a3
15
CHANGELOG.md
15
CHANGELOG.md
@ -3,9 +3,15 @@
|
||||
### Features
|
||||
* 接口运行增加了 query 和 body 的 enable 选项,可选择是否请求该字段
|
||||
* Mock 支持了时间戳占位符 @timestamp
|
||||
* 接口集运行页面可选择环境
|
||||
* 接口集动态参数格式由原来的 $.{key}.{jsonPath} 改为 $.{key}.{body|params}.{jsonPath}
|
||||
|
||||
### Bug Fixed
|
||||
* 修复了接口集运行功能会忽略 domain path 的 bug
|
||||
* 修复了接口集运行功能会忽略环境配置的 domain 路径
|
||||
* 修复了动态路由 mock 返回结果不是该接口定义返回数据
|
||||
* 修复了日志链接错误问题
|
||||
* 修复了添加用户 loading 问题
|
||||
* 修复了用户名编辑,前台未更新问题
|
||||
|
||||
## 1.1.1
|
||||
### Features
|
||||
@ -36,19 +42,12 @@
|
||||
|
||||
### Features
|
||||
* 网站改为100%布局
|
||||
|
||||
* 优化搜索的提示
|
||||
|
||||
* 支持了 queryPath
|
||||
|
||||
* 接口浏览页面和编辑页面交互
|
||||
|
||||
* 新增高级 Mock 功能,可通过 js 代码去控制 mock 数据的生成
|
||||
|
||||
* 测试集支持了自动化测试
|
||||
|
||||
* 增加复制接口功能
|
||||
|
||||
* 在组长和开发者权限基础上,添加了 查看着 权限
|
||||
|
||||
|
||||
|
@ -153,7 +153,16 @@ exports.entries = (obj) => {
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 作用:解析规则串 key ,然后根据规则串的规则以及路径找到在 json 中对应的数据
|
||||
* 规则串:$.{key}.{body||params}.{dataPath} 其中 body 为返回数据,params 为请求数据,datapath 为数据的路径
|
||||
* 数组:$.key.body.data.arr[0]._id (获取 key 所指向请求的返回数据的 arr 数组的第 0 项元素的 _id 属性)
|
||||
* 对象:$.key.body.data.obj._id ((获取 key 所指向请求的返回数据的 obj 对象的 _id 属性))
|
||||
*
|
||||
* @param String key 规则串
|
||||
* @param Object json 数据
|
||||
* @returns
|
||||
*/
|
||||
function simpleJsonPathParse(key, json){
|
||||
if(!key || typeof key !== 'string' || key.indexOf('$.') !== 0 || key.length <= 2){
|
||||
return null;
|
||||
|
@ -257,7 +257,7 @@ export default class InterfaceColMenu extends Component {
|
||||
}
|
||||
|
||||
render() {
|
||||
const { currColId, currCaseId, isShowCol } = this.props;
|
||||
let { currColId, currCaseId, isShowCol } = this.props;
|
||||
const { colModalType, colModalVisible, filterValue, importInterVisible } = this.state;
|
||||
|
||||
// const menu = (col) => {
|
||||
@ -279,7 +279,18 @@ export default class InterfaceColMenu extends Component {
|
||||
// };
|
||||
|
||||
let isFilterCat = false;
|
||||
|
||||
// console.log();
|
||||
// let caseList = this.props.interfaceColList.caseList;
|
||||
// if(caseList&&caseList.length>1){
|
||||
// caseList = caseList.sort((a,b)=>{
|
||||
// return a.index-b.index;
|
||||
// });
|
||||
// this.props.interfaceColList.caseList = caseList;
|
||||
// }
|
||||
|
||||
// console.log(this.props.match);
|
||||
console.log(currColId)
|
||||
// currColId = this.props.match.params.id?this.props.match.params.id:currColId;
|
||||
return (
|
||||
<div>
|
||||
<div className="interface-filter">
|
||||
@ -339,6 +350,8 @@ export default class InterfaceColMenu extends Component {
|
||||
return true;
|
||||
}
|
||||
return item.casename.indexOf(filterValue) !== -1
|
||||
}).sort((a,b)=>{
|
||||
return a.index-b.index;
|
||||
}).map((interfaceCase) => (
|
||||
<TreeNode
|
||||
style={{width: '100%'}}
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 18 KiB |
BIN
doc/images/usage/case_key_res_query.png
Normal file
BIN
doc/images/usage/case_key_res_query.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.1 KiB |
@ -20,19 +20,31 @@ Mock 参数每次请求都会生成随机字符串
|
||||
|
||||
#### 变量参数
|
||||
|
||||
YApi 提供了强大的变量参数功能,你可以在测试的时候使用 `前面接口的返回值` 作为 `后面接口的参数`,即使接口之间存在依赖,也可以 **一键测试~**
|
||||
YApi 提供了强大的变量参数功能,你可以在测试的时候使用前面接口的 `参数` 或 `返回值` 作为 `后面接口的参数`,即使接口之间存在依赖,也可以轻松 **一键测试~**
|
||||
|
||||
格式:
|
||||
```
|
||||
$.{key}.{params|body}.{path}
|
||||
```
|
||||
|
||||
例如:现有两个接口,分别是“导航标题”和“文章列表”
|
||||
|
||||
<img class="doc-img" style="width: 678px;" src="./images/usage/case_key_list.png" />
|
||||
|
||||
文章列表接口需要传参数: `当前标题(id)`,而这个 id 需要通过 `导航标题` 的返回值获取,这时应在 `文章列表` 的参数输入框中根据前者的 key 找到对应 id。
|
||||
|
||||
`导航标题` 的返回值:
|
||||
<img class="doc-img" style="width: 122px;" src="./images/usage/case_key_res.png" />
|
||||
`导航标题` 的参数和返回值有如下结构:
|
||||
<div style="margin: 16px 0;">
|
||||
<span style="display: inline-block; width: 60px;vertical-align: top;">参数:</span>
|
||||
<img style="width: 165px;" src="./images/usage/case_key_res_query.png" />
|
||||
</div>
|
||||
<div style="margin: 16px 0;">
|
||||
<span style="display: inline-block; width: 60px;vertical-align: top;">返回值:</span>
|
||||
<img style="width: 122px;" src="./images/usage/case_key_res.png" />
|
||||
</div>
|
||||
|
||||
`文章列表` 的参数配置:
|
||||
<img class="doc-img" style="width: 682px;" src="./images/usage/case_key_query.png" />
|
||||
$. 是使用动态变量的标志,**$.269 即表示 key 值为 269 的用例返回的数据**。
|
||||
则 `文章列表` 的参数可以如下配置:
|
||||
<img class="doc-img" style="width: 624px;" src="./images/usage/case_key_query.png" />
|
||||
|
||||
其中 **$.** 是使用 **动态变量** 的标志,$.269.**params** 即表示 key 值为 269 用例的请求参数,$.269.**body** 即表示 key 值为 269 用例的返回值。
|
||||
|
||||
> Tips: 上下拖动测试集合的列表项可以调整测试的顺序。
|
||||
|
@ -1,6 +1,6 @@
|
||||
本页面罗列了大家使用 YApi 时遇到的常见问题.
|
||||
|
||||
如果没有找到您要的答案,请 qtalk 联系: `wenbo.dong; wenxiong.su; wenjie.zhang.`
|
||||
如果没有找到您要的答案,请联系管理员.
|
||||
|
||||
## Q1: 怎样联系组长?
|
||||
|
||||
@ -10,16 +10,27 @@
|
||||
- 项目组长: 点击项目页的 `设置` - `成员列表`,成员右侧显示着 `组长/开发者` 的权限信息。
|
||||
<img src="./images/usage/manage_find_project_owner.png" />
|
||||
|
||||
## Q2: 怎么快速把之前项目接口迁移过来?
|
||||
## Q2: 怎么快速迁移旧项目?
|
||||
|
||||
第一步. 使用Chrome浏览器开发者工具录制功能
|
||||
第一步. 使用 Chrome 浏览器开发者工具录制功能
|
||||
|
||||
第二步 录制当前项目所有请求,导出到har文件
|
||||
第二步 录制当前项目所有请求,导出到 har 文件
|
||||
|
||||
第三步 将Har数据导入到YApi平台
|
||||
第三步 将Har数据导入到 YApi 平台
|
||||
|
||||
具体使用方法请参考YApi<a href="./data.html#HAR%08%08_数据导入">文档</a>
|
||||
具体使用方法请参考 YApi <a href="./data.html#HAR%08%08_数据导入">文档</a>
|
||||
|
||||
## Q3: 忘记密码怎么办?
|
||||
|
||||
请联系 `超级管理员` ,只有超级管理员能重置密码。
|
||||
|
||||
## 04: 发现了 Bug 怎么办?
|
||||
|
||||
请反馈到 <a href="https://github.com/YMFE/yapi/issues" _blank="target">Github</a>,功能性的问题我们会在一周内修复,并在每周一发布新的版本 Tag.
|
||||
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
@ -103,6 +103,7 @@
|
||||
"redux-devtools-log-monitor": "^1.3.0",
|
||||
"redux-promise": "^0.5.3",
|
||||
"redux-thunk": "^2.2.0",
|
||||
"rewire": "^2.5.2",
|
||||
"string-replace-webpack-plugin": "^0.1.3",
|
||||
"style-loader": "^0.18.2",
|
||||
"table-resolver": "^3.2.0",
|
||||
@ -139,7 +140,9 @@
|
||||
"node": ">= 7.6.0",
|
||||
"npm": ">= 4.1.2"
|
||||
},
|
||||
"ava":{
|
||||
"files": ["test/**/*.js"]
|
||||
"ava": {
|
||||
"files": [
|
||||
"test/**/*.js"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,11 @@ const mockExtra = require('../../common/mock-extra.js');
|
||||
const _ = require('underscore');
|
||||
const Mock = require('mockjs');
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {*} apiPath /user/tom
|
||||
* @param {*} apiRule /user/:username
|
||||
*/
|
||||
function matchApi(apiPath, apiRule) {
|
||||
let apiRules = apiRule.split("/");
|
||||
let apiPaths = apiPath.split("/");
|
||||
|
Binary file not shown.
@ -43,6 +43,11 @@
|
||||
<a href="plugin.html">插件Wiki</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="qa.html">常见问题</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="releases.html">版本记录</a>
|
||||
@ -3048,7 +3053,7 @@
|
||||
|
||||
<p>
|
||||
<small class="text-muted">源码位置:</small>
|
||||
<a href="./static/server/controllers/project.js.html#624" target="_blank">./server/controllers/project.js:624</a>
|
||||
<a href="./static/server/controllers/project.js.html#625" target="_blank">./server/controllers/project.js:625</a>
|
||||
</p>
|
||||
|
||||
|
||||
@ -3140,7 +3145,7 @@
|
||||
|
||||
<p>
|
||||
<small class="text-muted">源码位置:</small>
|
||||
<a href="./static/server/controllers/project.js.html#674" target="_blank">./server/controllers/project.js:674</a>
|
||||
<a href="./static/server/controllers/project.js.html#675" target="_blank">./server/controllers/project.js:675</a>
|
||||
</p>
|
||||
|
||||
|
||||
@ -4502,7 +4507,7 @@
|
||||
|
||||
<p>
|
||||
<small class="text-muted">源码位置:</small>
|
||||
<a href="./static/server/controllers/interfaceCol.js.html#159" target="_blank">./server/controllers/interfaceCol.js:159</a>
|
||||
<a href="./static/server/controllers/interfaceCol.js.html#162" target="_blank">./server/controllers/interfaceCol.js:162</a>
|
||||
</p>
|
||||
|
||||
|
||||
@ -4684,7 +4689,7 @@
|
||||
|
||||
<p>
|
||||
<small class="text-muted">源码位置:</small>
|
||||
<a href="./static/server/controllers/interfaceCol.js.html#299" target="_blank">./server/controllers/interfaceCol.js:299</a>
|
||||
<a href="./static/server/controllers/interfaceCol.js.html#302" target="_blank">./server/controllers/interfaceCol.js:302</a>
|
||||
</p>
|
||||
|
||||
|
||||
@ -4854,7 +4859,7 @@
|
||||
|
||||
<p>
|
||||
<small class="text-muted">源码位置:</small>
|
||||
<a href="./static/server/controllers/interfaceCol.js.html#368" target="_blank">./server/controllers/interfaceCol.js:368</a>
|
||||
<a href="./static/server/controllers/interfaceCol.js.html#371" target="_blank">./server/controllers/interfaceCol.js:371</a>
|
||||
</p>
|
||||
|
||||
|
||||
@ -4916,7 +4921,7 @@
|
||||
|
||||
<p>
|
||||
<small class="text-muted">源码位置:</small>
|
||||
<a href="./static/server/controllers/interfaceCol.js.html#435" target="_blank">./server/controllers/interfaceCol.js:435</a>
|
||||
<a href="./static/server/controllers/interfaceCol.js.html#438" target="_blank">./server/controllers/interfaceCol.js:438</a>
|
||||
</p>
|
||||
|
||||
|
||||
@ -4990,7 +4995,7 @@
|
||||
|
||||
<p>
|
||||
<small class="text-muted">源码位置:</small>
|
||||
<a href="./static/server/controllers/interfaceCol.js.html#477" target="_blank">./server/controllers/interfaceCol.js:477</a>
|
||||
<a href="./static/server/controllers/interfaceCol.js.html#480" target="_blank">./server/controllers/interfaceCol.js:480</a>
|
||||
</p>
|
||||
|
||||
|
||||
@ -5050,7 +5055,7 @@
|
||||
|
||||
<p>
|
||||
<small class="text-muted">源码位置:</small>
|
||||
<a href="./static/server/controllers/interfaceCol.js.html#509" target="_blank">./server/controllers/interfaceCol.js:509</a>
|
||||
<a href="./static/server/controllers/interfaceCol.js.html#512" target="_blank">./server/controllers/interfaceCol.js:512</a>
|
||||
</p>
|
||||
|
||||
|
||||
|
@ -43,6 +43,11 @@
|
||||
<a href="plugin.html">插件Wiki</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="qa.html">常见问题</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="releases.html">版本记录</a>
|
||||
@ -149,12 +154,6 @@
|
||||
|
||||
<a href="data.html">数据导入</a>
|
||||
</li>
|
||||
|
||||
<!-- <li > -->
|
||||
<li >
|
||||
|
||||
<a href="qa.html">常见问题</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
@ -170,15 +169,25 @@
|
||||
<p>测试完成之后,点击报告查看该次请求的结果</p>
|
||||
<h2 class="subject" id="编辑测试用例">编辑测试用例 <a class="hashlink" href="#编辑测试用例">#</a></h2><h3 class="subject" id="Mock参数">Mock参数 <a class="hashlink" href="#Mock参数">#</a></h3><p>Mock 参数每次请求都会生成随机字符串</p>
|
||||
<p><img class="doc-img" style="width:100%" src="./images/usage/case-edit.jpg" /></p>
|
||||
<h4 class="subject" id="变量参数">变量参数 <a class="hashlink" href="#变量参数">#</a></h4><p>YApi 提供了强大的变量参数功能,你可以在测试的时候使用 <code>前面接口的返回值</code> 作为 <code>后面接口的参数</code>,即使接口之间存在依赖,也可以 <strong>一键测试~</strong></p>
|
||||
<p>例如:现有两个接口,分别是“导航标题”和“文章列表”</p>
|
||||
<p><img class="doc-img" style="width: 678px;" src="./images/usage/case_key_list.png" /></p>
|
||||
<h4 class="subject" id="变量参数">变量参数 <a class="hashlink" href="#变量参数">#</a></h4><p>YApi 提供了强大的变量参数功能,你可以在测试的时候使用前面接口的 <code>参数</code> 或 <code>返回值</code> 作为 <code>后面接口的参数</code>,即使接口之间存在依赖,也可以轻松 <strong>一键测试~</strong></p>
|
||||
<p>格式:</p>
|
||||
<pre><code>$.<span class="token punctuation">{</span>key<span class="token punctuation">}</span>.<span class="token punctuation">{</span>params|body<span class="token punctuation">}</span>.<span class="token punctuation">{</span>path<span class="token punctuation">}</span>
|
||||
</code></pre><p>例如:现有两个接口,分别是“导航标题”和“文章列表”
|
||||
<img class="doc-img" style="width: 678px;" src="./images/usage/case_key_list.png" /></p>
|
||||
<p>文章列表接口需要传参数: <code>当前标题(id)</code>,而这个 id 需要通过 <code>导航标题</code> 的返回值获取,这时应在 <code>文章列表</code> 的参数输入框中根据前者的 key 找到对应 id。</p>
|
||||
<p><code>导航标题</code> 的返回值:
|
||||
<img class="doc-img" style="width: 122px;" src="./images/usage/case_key_res.png" /></p>
|
||||
<p><code>文章列表</code> 的参数配置:
|
||||
<img class="doc-img" style="width: 682px;" src="./images/usage/case_key_query.png" />
|
||||
$. 是使用动态变量的标志,<strong>$.269 即表示 key 值为 269 的用例返回的数据</strong>。</p>
|
||||
<p><code>导航标题</code> 的参数和返回值有如下结构:</p>
|
||||
<div style="margin: 16px 0;">
|
||||
<span style="display: inline-block; width: 60px;vertical-align: top;">参数:</span>
|
||||
<img style="width: 165px;" src="./images/usage/case_key_res_query.png" />
|
||||
</div>
|
||||
<div style="margin: 16px 0;">
|
||||
<span style="display: inline-block; width: 60px;vertical-align: top;">返回值:</span>
|
||||
<img style="width: 122px;" src="./images/usage/case_key_res.png" />
|
||||
</div>
|
||||
|
||||
<p>则 <code>文章列表</code> 的参数可以如下配置:
|
||||
<img class="doc-img" style="width: 624px;" src="./images/usage/case_key_query.png" /></p>
|
||||
<p>其中 <strong>$.</strong> 是使用 <strong>动态变量</strong> 的标志,$.269.<strong>params</strong> 即表示 key 值为 269 用例的请求参数,$.269.<strong>body</strong> 即表示 key 值为 269 用例的返回值。</p>
|
||||
<blockquote>
|
||||
<p>Tips: 上下拖动测试集合的列表项可以调整测试的顺序。</p>
|
||||
</blockquote>
|
||||
|
@ -43,6 +43,11 @@
|
||||
<a href="plugin.html">插件Wiki</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="qa.html">常见问题</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="releases.html">版本记录</a>
|
||||
@ -151,15 +156,9 @@
|
||||
<li >
|
||||
<a href="#Swagger_数据导入">Swagger 数据导入</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<!-- <li > -->
|
||||
<li >
|
||||
|
||||
<a href="qa.html">常见问题</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
@ -43,6 +43,11 @@
|
||||
<a href="plugin.html">插件Wiki</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="qa.html">常见问题</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="releases.html">版本记录</a>
|
||||
|
@ -43,6 +43,11 @@
|
||||
<a href="plugin.html">插件Wiki</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="qa.html">常见问题</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="releases.html">版本记录</a>
|
||||
@ -153,12 +158,6 @@
|
||||
|
||||
<a href="data.html">数据导入</a>
|
||||
</li>
|
||||
|
||||
<!-- <li > -->
|
||||
<li >
|
||||
|
||||
<a href="qa.html">常见问题</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 18 KiB |
BIN
static/doc/images/usage/case_key_res_query.png
Normal file
BIN
static/doc/images/usage/case_key_res_query.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.1 KiB |
@ -43,6 +43,11 @@
|
||||
<a href="plugin.html">插件Wiki</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="qa.html">常见问题</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="releases.html">版本记录</a>
|
||||
@ -133,12 +138,6 @@
|
||||
|
||||
<a href="data.html">数据导入</a>
|
||||
</li>
|
||||
|
||||
<!-- <li > -->
|
||||
<li >
|
||||
|
||||
<a href="qa.html">常见问题</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
@ -43,6 +43,11 @@
|
||||
<a href="plugin.html">插件Wiki</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="qa.html">常见问题</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="releases.html">版本记录</a>
|
||||
@ -145,12 +150,6 @@
|
||||
|
||||
<a href="data.html">数据导入</a>
|
||||
</li>
|
||||
|
||||
<!-- <li > -->
|
||||
<li >
|
||||
|
||||
<a href="qa.html">常见问题</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
@ -43,6 +43,11 @@
|
||||
<a href="plugin.html">插件Wiki</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="qa.html">常见问题</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="releases.html">版本记录</a>
|
||||
@ -153,12 +158,6 @@
|
||||
|
||||
<a href="data.html">数据导入</a>
|
||||
</li>
|
||||
|
||||
<!-- <li > -->
|
||||
<li >
|
||||
|
||||
<a href="qa.html">常见问题</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
@ -43,6 +43,11 @@
|
||||
<a href="plugin.html">插件Wiki</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="qa.html">常见问题</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="releases.html">版本记录</a>
|
||||
@ -161,12 +166,6 @@
|
||||
|
||||
<a href="data.html">数据导入</a>
|
||||
</li>
|
||||
|
||||
<!-- <li > -->
|
||||
<li >
|
||||
|
||||
<a href="qa.html">常见问题</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
@ -43,6 +43,11 @@
|
||||
<a href="plugin.html">插件Wiki</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="qa.html">常见问题</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="releases.html">版本记录</a>
|
||||
|
@ -43,6 +43,11 @@
|
||||
<a href="plugin.html">插件Wiki</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="qa.html">常见问题</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="releases.html">版本记录</a>
|
||||
|
@ -43,6 +43,11 @@
|
||||
<a href="plugin.html">插件Wiki</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="qa.html">常见问题</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="releases.html">版本记录</a>
|
||||
|
@ -43,6 +43,11 @@
|
||||
<a href="plugin.html">插件Wiki</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="qa.html">常见问题</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="releases.html">版本记录</a>
|
||||
|
@ -43,6 +43,11 @@
|
||||
<a href="plugin.html">插件Wiki</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="qa.html">常见问题</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="releases.html">版本记录</a>
|
||||
|
@ -43,6 +43,11 @@
|
||||
<a href="plugin.html">插件Wiki</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="qa.html">常见问题</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="releases.html">版本记录</a>
|
||||
@ -149,12 +154,6 @@
|
||||
|
||||
<a href="data.html">数据导入</a>
|
||||
</li>
|
||||
|
||||
<!-- <li > -->
|
||||
<li >
|
||||
|
||||
<a href="qa.html">常见问题</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
@ -8,7 +8,7 @@
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge, chrome=1">
|
||||
<meta name="description" content="description of your site">
|
||||
<meta name="author" content="author of the site">
|
||||
<title>YApi 使用手册</title>
|
||||
<title>YApi 常见问题</title>
|
||||
<link rel="stylesheet" href="source/main.css" />
|
||||
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
<nav class="ydoc-nav">
|
||||
<ul class="navbar-left">
|
||||
|
||||
<li class="active">
|
||||
<li class="">
|
||||
|
||||
<a href="index.html">使用手册</a>
|
||||
</li>
|
||||
@ -43,6 +43,11 @@
|
||||
<a href="plugin.html">插件Wiki</a>
|
||||
</li>
|
||||
|
||||
<li class="active">
|
||||
|
||||
<a href="qa.html">常见问题</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="releases.html">版本记录</a>
|
||||
@ -67,15 +72,6 @@
|
||||
|
||||
<!-- Docs page layout -->
|
||||
|
||||
<div class="ydoc-banner-bg">
|
||||
<div class="ydoc-banner ">
|
||||
<div class="ydoc-banner-area">
|
||||
<h1 >YApi</h1>
|
||||
<p class="desc ">高效、易用、功能强大的api管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="ydoc-container">
|
||||
|
||||
@ -89,73 +85,27 @@
|
||||
<!-- <li > -->
|
||||
<li >
|
||||
|
||||
<a href="getfamiliar.html">认识 YApi</a>
|
||||
<a href="#Q1__怎样联系组长?">Q1: 怎样联系组长?</a>
|
||||
</li>
|
||||
|
||||
<!-- <li > -->
|
||||
<li >
|
||||
|
||||
<a href="quickstart.html">创建第一个API</a>
|
||||
<a href="#Q2__怎么快速迁移旧项目?">Q2: 怎么快速迁移旧项目?</a>
|
||||
</li>
|
||||
|
||||
<!-- <li > -->
|
||||
<li >
|
||||
|
||||
<a href="manage.html">管理分组与项目</a>
|
||||
<a href="#Q3__忘记密码怎么办?">Q3: 忘记密码怎么办?</a>
|
||||
</li>
|
||||
|
||||
<!-- <li > -->
|
||||
<li >
|
||||
|
||||
<a href="project.html">项目操作</a>
|
||||
<a href="#04__发现了_Bug_怎么办?">04: 发现了 Bug 怎么办?</a>
|
||||
</li>
|
||||
|
||||
<!-- <li > -->
|
||||
<li >
|
||||
|
||||
<a href="interface.html">接口操作</a>
|
||||
</li>
|
||||
|
||||
<!-- <li > -->
|
||||
<li >
|
||||
|
||||
<a href="mock.html">使用mock功能</a>
|
||||
</li>
|
||||
|
||||
<!-- <li > -->
|
||||
<li >
|
||||
|
||||
<a href="case.html">使用测试集</a>
|
||||
</li>
|
||||
|
||||
<!-- <li > -->
|
||||
<li >
|
||||
|
||||
<a href="data.html">数据导入</a>
|
||||
</li>
|
||||
|
||||
<!-- <li class="active" class="active" > -->
|
||||
<li class="active" >
|
||||
|
||||
<a href="qa.html">常见问题</a>
|
||||
</li>
|
||||
|
||||
<ul class="nav docs-sidenav-extend" >
|
||||
|
||||
<li >
|
||||
<a href="#Q1__怎样联系组长?">Q1: 怎样联系组长?</a>
|
||||
</li>
|
||||
|
||||
<li >
|
||||
<a href="#Q2__怎么快速把之前项目接口迁移过来?">Q2: 怎么快速把之前项目接口迁移过来?</a>
|
||||
</li>
|
||||
|
||||
<li >
|
||||
<a href="#Q3__忘记密码怎么办?">Q3: 忘记密码怎么办?</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
@ -163,25 +113,30 @@
|
||||
<div class="content-right markdown-body use-sidebar" role="main">
|
||||
|
||||
<p>本页面罗列了大家使用 YApi 时遇到的常见问题.</p>
|
||||
<p>如果没有找到您要的答案,请 qtalk 联系: <code>wenbo.dong; wenxiong.su; wenjie.zhang.</code></p>
|
||||
<p>如果没有找到您要的答案,请联系管理员.</p>
|
||||
<h2 class="subject" id="Q1__怎样联系组长?">Q1: 怎样联系组长? <a class="hashlink" href="#Q1__怎样联系组长?">#</a></h2><p>组长分为 <code>分组组长</code> 和 <code>项目组长</code>:</p>
|
||||
<ul>
|
||||
<li>分组组长:选择首页左侧的分组,点击右侧面板的 <code>成员列表</code>,成员右侧显示着 <code>组长/开发者</code> 的权限信息。
|
||||
<img src="./images/usage/manage_find_manager.png" /></li><li>项目组长: 点击项目页的 <code>设置</code> - <code>成员列表</code>,成员右侧显示着 <code>组长/开发者</code> 的权限信息。
|
||||
<img src="./images/usage/manage_find_project_owner.png" /></li></ul>
|
||||
<h2 class="subject" id="Q2__怎么快速把之前项目接口迁移过来?">Q2: 怎么快速把之前项目接口迁移过来? <a class="hashlink" href="#Q2__怎么快速把之前项目接口迁移过来?">#</a></h2><p>第一步. 使用Chrome浏览器开发者工具录制功能</p>
|
||||
<p>第二步 录制当前项目所有请求,导出到har文件</p>
|
||||
<p>第三步 将Har数据导入到YApi平台</p>
|
||||
<p>具体使用方法请参考YApi<a href="./data.html#HAR%08%08_数据导入">文档</a></p>
|
||||
<h2 class="subject" id="Q2__怎么快速迁移旧项目?">Q2: 怎么快速迁移旧项目? <a class="hashlink" href="#Q2__怎么快速迁移旧项目?">#</a></h2><p>第一步. 使用 Chrome 浏览器开发者工具录制功能</p>
|
||||
<p>第二步 录制当前项目所有请求,导出到 har 文件</p>
|
||||
<p>第三步 将Har数据导入到 YApi 平台</p>
|
||||
<p>具体使用方法请参考 YApi <a href="./data.html#HAR%08%08_数据导入">文档</a></p>
|
||||
<h2 class="subject" id="Q3__忘记密码怎么办?">Q3: 忘记密码怎么办? <a class="hashlink" href="#Q3__忘记密码怎么办?">#</a></h2><p>请联系 <code>超级管理员</code> ,只有超级管理员能重置密码。</p>
|
||||
<h2 class="subject" id="04__发现了_Bug_怎么办?">04: 发现了 Bug 怎么办? <a class="hashlink" href="#04__发现了_Bug_怎么办?">#</a></h2><p>请反馈到 <a href="https://github.com/YMFE/yapi/issues" _blank="target">Github</a>,功能性的问题我们会在一周内修复,并在每周一发布新的版本 Tag.</p>
|
||||
<p><br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="copyright">
|
||||
© 2016 <a href="http://ued.qunar.com/ymfe/">YMFE</a> Team. Build by <a href="http://ued.qunar.com/ydoc/">ydoc</a>.
|
||||
|
@ -43,6 +43,11 @@
|
||||
<a href="plugin.html">插件Wiki</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="qa.html">常见问题</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="releases.html">版本记录</a>
|
||||
@ -149,12 +154,6 @@
|
||||
|
||||
<a href="data.html">数据导入</a>
|
||||
</li>
|
||||
|
||||
<!-- <li > -->
|
||||
<li >
|
||||
|
||||
<a href="qa.html">常见问题</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
@ -43,6 +43,11 @@
|
||||
<a href="plugin.html">插件Wiki</a>
|
||||
</li>
|
||||
|
||||
<li class="">
|
||||
|
||||
<a href="qa.html">常见问题</a>
|
||||
</li>
|
||||
|
||||
<li class="active">
|
||||
|
||||
<a href="releases.html">版本记录</a>
|
||||
@ -175,9 +180,9 @@
|
||||
<div class="content-right markdown-body use-sidebar" role="main">
|
||||
|
||||
<h2 class="subject" id="1.1.2">1.1.2 <a class="hashlink" href="#1.1.2">#</a></h2><h3 class="subject" id="Features">Features <a class="hashlink" href="#Features">#</a></h3><ul>
|
||||
<li>接口运行增加了 query 和 body 的 enable 选项,可选择是否请求该字段</li><li>Mock 支持了时间戳占位符 @timestamp</li></ul>
|
||||
<li>接口运行增加了 query 和 body 的 enable 选项,可选择是否请求该字段</li><li>Mock 支持了时间戳占位符 @timestamp</li><li>接口集运行页面可选择环境</li><li>接口集动态参数格式由原来的 $.{key}.{jsonPath} 改为 $.{key}.{body|params}.{jsonPath}</li></ul>
|
||||
<h3 class="subject" id="Bug_Fixed">Bug Fixed <a class="hashlink" href="#Bug_Fixed">#</a></h3><ul>
|
||||
<li>修复了接口集运行功能会忽略 domain path 的 bug</li></ul>
|
||||
<li>修复了接口集运行功能会忽略环境配置的 domain 路径</li><li>修复了动态路由 mock 返回结果不是该接口定义返回数据</li><li>修复了日志链接错误问题</li><li>修复了添加用户 loading 问题</li><li>修复了用户名编辑,前台未更新问题</li></ul>
|
||||
<h2 class="subject" id="1.1.1">1.1.1 <a class="hashlink" href="#1.1.1">#</a></h2><h3 class="subject" id="Features">Features <a class="hashlink" href="#Features">#</a></h3><ul>
|
||||
<li>添加插件开发文档</li><li>接口和测试用例可拖动</li><li>优化动态提示</li></ul>
|
||||
<h3 class="subject" id="Bug_Fixed">Bug Fixed <a class="hashlink" href="#Bug_Fixed">#</a></h3><ul>
|
||||
@ -185,15 +190,7 @@
|
||||
<h2 class="subject" id="1.1.0">1.1.0 <a class="hashlink" href="#1.1.0">#</a></h2><h3 class="subject" id="Features">Features <a class="hashlink" href="#Features">#</a></h3><ul>
|
||||
<li>新增个人空间功能,拥有这个分组的全部权限,可以在这个分组里探索 YApi 的功能</li><li>新增分组动态功能</li><li>优化接口运行页面交互</li><li>CrossRequest 扩展支持 https</li><li>增加了 Swagger 数据导入功能</li></ul>
|
||||
<h2 class="subject" id="1.0.2">1.0.2 <a class="hashlink" href="#1.0.2">#</a></h2><h3 class="subject" id="Features">Features <a class="hashlink" href="#Features">#</a></h3><ul>
|
||||
<li><p>网站改为100%布局</p>
|
||||
</li><li><p>优化搜索的提示</p>
|
||||
</li><li><p>支持了 queryPath</p>
|
||||
</li><li><p>接口浏览页面和编辑页面交互</p>
|
||||
</li><li><p>新增高级 Mock 功能,可通过 js 代码去控制 mock 数据的生成</p>
|
||||
</li><li><p>测试集支持了自动化测试</p>
|
||||
</li><li><p>增加复制接口功能</p>
|
||||
</li><li><p>在组长和开发者权限基础上,添加了 查看着 权限</p>
|
||||
</li></ul>
|
||||
<li>网站改为100%布局</li><li>优化搜索的提示</li><li>支持了 queryPath</li><li>接口浏览页面和编辑页面交互</li><li>新增高级 Mock 功能,可通过 js 代码去控制 mock 数据的生成</li><li>测试集支持了自动化测试</li><li>增加复制接口功能</li><li>在组长和开发者权限基础上,添加了 查看着 权限</li></ul>
|
||||
<h2 class="subject" id="1.0.1">1.0.1 <a class="hashlink" href="#1.0.1">#</a></h2><h3 class="subject" id="Fix_Bug">Fix Bug <a class="hashlink" href="#Fix_Bug">#</a></h3><ul>
|
||||
<li>修改接口名字后,需要刷新页面左边的侧边栏才会显示正确的名字 </li><li>mockJson 出现 null,mock 出现格式不对问题 </li><li>没有权限的分组不可选 </li><li>项目列表图标设计大小优化下 </li><li>关注的项目不显眼 </li><li>添加接口之后,再次选择添加接口,会保留上次填写的信息 </li><li>用例名称太长,导致无法使用删除功能 </li><li>别人知道项目id虽然没有权限,但能看到里面所有内容 </li></ul>
|
||||
<h3 class="subject" id="Features">Features <a class="hashlink" href="#Features">#</a></h3><ul>
|
||||
|
@ -8,7 +8,6 @@ $(document).ready(function() {
|
||||
var $versionSelector = $('.version-selector');
|
||||
var $versionMask = $('.m-version-mask');
|
||||
var isPanelHide = true;
|
||||
var winWidth = $(window).width();
|
||||
var h2 = $('.content-right').find('h2');
|
||||
var h3 = $('.content-right').find('h3');
|
||||
var a = $('.content-left').find('a');
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -178,6 +178,9 @@ class interfaceColController extends baseController{
|
||||
result.req_params = this.handleParamsValue(data.req_params, result.req_params)
|
||||
resultList[index] = result;
|
||||
}
|
||||
resultList = resultList.sort((a,b)=>{
|
||||
return a.index - b.index;
|
||||
});
|
||||
ctx.body = yapi.commons.resReturn(resultList);
|
||||
} catch (e) {
|
||||
ctx.body = yapi.commons.resReturn(null, 402, e.message);
|
||||
|
@ -630,6 +630,7 @@ class projectController extends baseController {
|
||||
|
||||
if (!_.isUndefined(params.name)) data.name = params.name;
|
||||
if (!_.isUndefined(params.desc)) data.desc = params.desc;
|
||||
if (!_.isUndefined(params.group_id)) data.group_id = params.group_id;
|
||||
data.basepath = params.basepath;
|
||||
if (!_.isUndefined(params.color)) data.color = params.color;
|
||||
if (!_.isUndefined(params.icon)) data.icon = params.icon;
|
||||
|
23
test/server/mockServer.test.js
Normal file
23
test/server/mockServer.test.js
Normal file
@ -0,0 +1,23 @@
|
||||
import test from 'ava';
|
||||
const rewire = require("rewire");
|
||||
const mockServer = rewire('../../server/middleware/mockServer.js');
|
||||
const matchApi = mockServer.__get__('matchApi');
|
||||
|
||||
test('matchApi', t => {
|
||||
const apiRule = '/user/:username';
|
||||
t.true(matchApi('/user/tom', apiRule));
|
||||
t.true(matchApi('/user/111$$%#$##$#2222222222!!!!!!!', apiRule))
|
||||
t.false(matchApi('/user/a/', apiRule))
|
||||
t.false(matchApi('/use/a', apiRule))
|
||||
|
||||
const apiRule_2 = '/user/:username/kk';
|
||||
t.true(matchApi('/user/aa/kk', apiRule_2));
|
||||
t.true(matchApi('/user/!!!###kksdjfks***/kk', apiRule_2));
|
||||
t.false(matchApi('/user/aa/aa', apiRule_2));
|
||||
|
||||
const apiRule_3 = '/user/:sdfsdfj/ttt/:sdkfjkj';
|
||||
t.true(matchApi('/user/a/ttt/b', apiRule_3));
|
||||
t.false(matchApi('/user/a/ttt2/b', apiRule_3))
|
||||
|
||||
|
||||
});
|
11
ydoc.json
11
ydoc.json
@ -60,10 +60,6 @@
|
||||
"name": "数据导入",
|
||||
"index": "data",
|
||||
"content": "./doc/page/usage/data.md"
|
||||
},{
|
||||
"name": "常见问题",
|
||||
"index": "qa",
|
||||
"content": "./doc/page/usage/qa.md"
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -136,6 +132,13 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "qa",
|
||||
"title": "常见问题",
|
||||
"compile": "markdown",
|
||||
"menuLevel": 2,
|
||||
"content": "./doc/page/usage/qa.md"
|
||||
},
|
||||
{
|
||||
"name": "releases",
|
||||
"title": "版本记录",
|
||||
|
Loading…
x
Reference in New Issue
Block a user