Merge branch 'dev' of gitlab.corp.qunar.com:mfe/yapi into dev

This commit is contained in:
zwjamnsss 2017-08-31 16:00:46 +08:00
commit 8144052368
48 changed files with 4320 additions and 258 deletions

View File

@ -19,7 +19,8 @@ class AddInterfaceForm extends Component {
form: PropTypes.object,
onSubmit: PropTypes.func,
onCancel: PropTypes.func,
catid: PropTypes.number
catid: PropTypes.number,
catdata: PropTypes.array
}
handleSubmit = (e) => {
e.preventDefault();
@ -31,7 +32,7 @@ class AddInterfaceForm extends Component {
});
}
handlePath = (e)=>{
handlePath = (e) => {
let val = e.target.value
this.props.form.setFieldsValue({
path: handlePath(val)
@ -64,6 +65,20 @@ class AddInterfaceForm extends Component {
return (
<Form onSubmit={this.handleSubmit}>
<FormItem
{...formItemLayout}
label="接口分类"
>
{getFieldDecorator('catid', {
initialValue: this.props.catid ? this.props.catid + '' : this.props.catdata[0]._id + ''
})(
<Select>
{this.props.catdata.map(item => {
return <Option key={item._id} value={item._id+""}>{item.name}</Option>
})}
</Select>
)}
</FormItem>
<FormItem
{...formItemLayout}
label="接口名称"

View File

@ -6,7 +6,7 @@ import { handlePath } from '../../../../common.js'
import {
Form, Select, Input, Tooltip,
Button, Row, Col, Radio, Icon, AutoComplete
Button, Row, Col, Radio, Icon, AutoComplete, Switch
} from 'antd';
const FormItem = Form.Item;
@ -206,11 +206,11 @@ class InterfaceEditForm extends Component {
}
}
}
this.setState({
req_params: queue
})
}
this.setState({
req_params: queue
})
}
render() {
@ -420,7 +420,7 @@ class InterfaceEditForm extends Component {
required: true, message: '请输入接口路径!'
}]
})(
<Input onBlur={this.handlePath} placeholder="/path" style={{ width: '60%' }} />
<Input onChange={this.handlePath} placeholder="/path" style={{ width: '60%' }} />
)}
</InputGroup>
<Row className="interface-edit-item">
@ -564,7 +564,7 @@ class InterfaceEditForm extends Component {
initialValue: this.state.res_body_type
})(
<RadioGroup>
<Radio value="json">json</Radio>
<Radio value="json">json(mock)</Radio>
<Radio value="raw">raw</Radio>
</RadioGroup>
@ -574,6 +574,7 @@ class InterfaceEditForm extends Component {
<Row className="interface-edit-item" style={{ display: this.props.form.getFieldValue('res_body_type') === 'json' ? 'block' : 'none' }}>
<Col span={17} offset={4} >
<h3>基于mockjs和json5,可直接写mock模板和注释,具体使用方法请查看文档</h3>
<div id="res_body_json" style={{ minHeight: "300px" }} ></div>
</Col>
</Row>
@ -584,7 +585,7 @@ class InterfaceEditForm extends Component {
{...formItemLayout}
label="mock地址"
>
<Input onChange={() => { }} value={this.state.mockUrl} />
<Input disabled onChange={() => { }} value={this.state.mockUrl} />
</FormItem>
<FormItem
@ -609,6 +610,27 @@ class InterfaceEditForm extends Component {
</Row>
<FormItem
className="interface-edit-item"
{...formItemLayout}
label="是否开启邮件通知"
>
{getFieldDecorator('switch_notice', { valuePropName: 'checked', initialValue: false })(
<Switch checkedChildren="开" unCheckedChildren="关" />
)}
</FormItem>
<FormItem
style={{ display: this.props.form.getFieldValue('switch_notice') === true ? 'block' : 'none' }}
className="interface-edit-item"
{...formItemLayout}
label="改动日志"
>
{getFieldDecorator('message', { initialValue: "" })(
<Input.TextArea style={{ minHeight: "150px" }} placeholder="改动日志会通过邮件发送给关注此项目的用户" />
)}
</FormItem>
<FormItem
className="interface-edit-item"

View File

@ -3,43 +3,54 @@ import { connect } from 'react-redux';
import PropTypes from 'prop-types'
import axios from 'axios'
import {
Table, Tag
Table, Tag, Button, Modal, message
} from 'antd';
import { formatTime } from '../../../../common.js'
import AddInterfaceForm from './AddInterfaceForm';
import { fetchInterfaceList} from '../../../../reducer/modules/interface.js';
@connect(
state => {
return {
curProject: state.project.currProject
}
},{
fetchInterfaceList
})
class InterfaceList extends Component {
constructor(props) {
super(props)
this.state = {
visible: false,
data: [],
sortedInfo: {
order: 'ascend',
columnKey: 'title'
}
},
catid: null
}
}
static propTypes = {
match: PropTypes.object,
curProject: PropTypes.object
curProject: PropTypes.object,
history: PropTypes.object,
fetchInterfaceList: PropTypes.func
}
handleRequest = async (props) => {
const { params } = props.match;
if (!params.actionId) {
let projectId = params.id;
this.setState({
catid: null
})
let r = await axios.get('/api/interface/list?project_id=' + projectId);
this.setState({
data: r.data.data
})
} else if (isNaN(params.actionId)) {
let catid = params.actionId.substr(4)
this.setState({ catid: +catid })
let r = await axios.get('/api/interface/list_cat?catid=' + catid);
this.setState({
data: r.data.data
@ -47,6 +58,8 @@ class InterfaceList extends Component {
}
}
handleChange = (pagination, filters, sorter) => {
this.setState({
sortedInfo: sorter
@ -66,6 +79,19 @@ class InterfaceList extends Component {
}
}
handleAddInterface =(data)=> {
data.project_id = this.props.curProject._id;
axios.post('/api/interface/add', data).then((res) => {
if (res.data.errcode !== 0) {
return message.error(res.data.errmsg);
}
message.success('接口添加成功')
let interfaceId = res.data.data._id;
this.props.history.push("/project/" + data.project_id + "/interface/api/" + interfaceId)
this.props.fetchInterfaceList(data.project_id)
})
}
render() {
let { sortedInfo } = this.state;
sortedInfo = sortedInfo || {};
@ -81,7 +107,7 @@ class InterfaceList extends Component {
title: '接口路径',
dataIndex: 'path',
key: 'path',
render: (item)=>{
render: (item) => {
return <span>{this.props.curProject.basepath + item}</span>
}
}, {
@ -122,9 +148,18 @@ class InterfaceList extends Component {
});
return (
<div style={{padding:"15px"}}>
<h2 style={{marginBottom: '10px'}}>接口列表</h2>
<Table pagination={false} columns={columns} onChange={this.handleChange} dataSource={data} />
<div style={{ padding: "15px" }}>
<h2 style={{ display: 'inline-block'}}>接口列表</h2>
<Button style={{float: "right", marginRight: '10px'}} type="primary" onClick={() => this.setState({ visible: true })}>添加接口</Button>
<Table style={{marginTop: '20px'}} pagination={false} columns={columns} onChange={this.handleChange} dataSource={data} />
<Modal
title="添加接口"
visible={this.state.visible}
onCancel={() => this.setState({ 'visible': false })}
footer={null}
>
<AddInterfaceForm catid={this.state.catid} catdata={this.props.curProject.cat} onCancel={() => this.setState({ 'visible': false })} onSubmit={this.handleAddInterface} />
</Modal>
</div>
)
}

View File

@ -299,14 +299,16 @@ class InterfaceMenu extends Component {
<Modal
title="添加接口"
visible={this.state.visible}
onCancel={() => this.changeModal('visible', false)}
footer={null}
>
<AddInterfaceForm catid={this.state.curCatid} onCancel={() => this.changeModal('visible', false)} onSubmit={this.handleAddInterface} />
<AddInterfaceForm catdata={this.props.curProject.cat} catid={this.state.curCatid} onCancel={() => this.changeModal('visible', false)} onSubmit={this.handleAddInterface} />
</Modal>
<Modal
title="添加分类"
visible={this.state.add_cat_modal_visible}
onCancel={() => this.changeModal('add_cat_modal_visible', false)}
footer={null}
>
<AddInterfaceCatForm onCancel={() => this.changeModal('add_cat_modal_visible', false)} onSubmit={this.handleAddInterfaceCat} />
@ -315,6 +317,7 @@ class InterfaceMenu extends Component {
<Modal
title="修改分类"
visible={this.state.change_cat_modal_visible}
onCancel={() => this.changeModal('change_cat_modal_visible', false)}
footer={null}
>
<AddInterfaceCatForm catdata={this.state.curCatdata} onCancel={() => this.changeModal('change_cat_modal_visible', false)} onSubmit={this.handleChangeInterfaceCat} />
@ -325,7 +328,6 @@ class InterfaceMenu extends Component {
className="interface-list"
defaultExpandedKeys={currentKes.expands}
defaultSelectedKeys={currentKes.selects}
selectedKeys={currentKes.selects}
onSelect={this.onSelect}
>
<TreeNode className="item-all-interface" title={<Link style={{ fontSize: '14px' }} to={"/project/" + matchParams.id + "/interface/api"}><Icon type="folder" style={{ marginRight: 5 }} />全部接口</Link>} key="root" />
@ -335,7 +337,10 @@ class InterfaceMenu extends Component {
<Dropdown overlay={menu(item)}>
<Icon type='bars' className="interface-delete-icon" />
</Dropdown>
</div>} key={'cat_' + item._id} >
</div>}
key={'cat_' + item._id}
className="interface-item-nav"
>
{item.list.map(item_interface_create)}
</TreeNode>

View File

@ -65,6 +65,9 @@
.interface-item{
display: inline
}
.interface-item-nav{
line-height:25px;
}
.ant-tree-node-content-wrapper{
width: 100%
@ -72,9 +75,11 @@
.interface-delete-icon{
position: relative;
right: 31px;
top: 6px;
float: right
right: 21px;
top: 2px;
float: right;
line-height: 25px;
width: 30px;
}
}
}

5
doc/manage/admin.md Normal file
View File

@ -0,0 +1,5 @@
## 用户管理
## 分配组长
## 维护数据库

3
doc/manage/build.md Normal file
View File

@ -0,0 +1,3 @@
## 快速部署
## 配置说明

0
doc/manage/intro.md Normal file
View File

1
doc/manage/update.md Normal file
View File

@ -0,0 +1 @@
版本升级

0
doc/usage/authority.md Normal file
View File

3
doc/usage/case.md Normal file
View File

@ -0,0 +1,3 @@
## 介绍
## 使用说明

7
doc/usage/getfamiliar.md Normal file
View File

@ -0,0 +1,7 @@
## 登录与注册
## 首页
## 项目页
## 个人信息

3
doc/usage/interface.md Normal file
View File

@ -0,0 +1,3 @@
## 介绍
## 配置说明

3
doc/usage/leader.md Normal file
View File

@ -0,0 +1,3 @@
## 什么是组长
## 组长职责

5
doc/usage/mock.md Normal file
View File

@ -0,0 +1,5 @@
## 介绍
## 使用说明
## 模板语法

View File

@ -1,31 +1,34 @@
## 快速开始
### 1 创建项目分组
## 起步
### 创建API
注册新用户或使用 QSSO 登录。
新用户进入 YApi 时没有任何权限,只能浏览公开项目,想要创建 API 应联系 `组长` 将你添加到某分组或某项目中。
登录之后进到项目首页,左边侧边栏显示的即分组列表。
<img src="./images/project_group.png" width = "200" style="margin-left:170px;display:block;" alt="图片名称" align=center />
联系管理员添加分组并且把你设置为组长或让组长邀请你加入到某项目分组
#### 2 项目列表
#### 项目列表
选中不同的分组,右边会显示该分组下的项目列表。
<img src="./images/project_list.png" width = "800" style="margin:0px auto;display:block;" alt="图片名称" align=center />
### 3 添加项目
### 添加项目
#### 3.1 点击右上角的“+“号进入添加项目页面
- 点击右上角的“+“号进入添加项目页面
<img src="./images/project_add.png" width = "100%" style="margin:0px auto;display:block;" alt="图片名称" align=center />
#### 3.2 添加项目页面
- 添加项目页面
<img src="./images/project_add_view.png" width = "100%" style="margin:0px auto;display:block;" alt="图片名称" align=center />
添加完成后进去项目详情页面
### 4 项目详情页面
### 项目详情页面
#### 4.1 添加接口分类
#### 添加接口分类
<img src="./images/interface_add_cat.png" width = "800" style="margin:0px auto;display:block;" alt="图片名称" align=center />
@ -42,4 +45,4 @@
#### 4.4 测试接口
点击运行tab,可进入到接口测试页面,首先安装chrome crossRequest扩展才可正常使用此功能
<img src="./images/interface_run.png" width="800" style="margin:0px auto;display:block;" alt="图片名称" align=center />
点击保存按钮可把当前测试保存到测试集,方便下次调试
点击保存按钮可把当前测试保存到测试集,方便下次调试

View File

@ -1,7 +1,7 @@
import interfaceModel from '../models/interface.js';
import interfaceCatModel from '../models/interfaceCat.js';
import interfaceCaseModel from '../models/interfaceCase.js'
import followModel from '../models/follow.js'
import _ from 'underscore';
import baseController from './base.js';
import yapi from '../yapi.js';
@ -15,6 +15,8 @@ class interfaceController extends baseController {
this.catModel = yapi.getInst(interfaceCatModel);
this.projectModel = yapi.getInst(projectModel);
this.caseModel = yapi.getInst(interfaceCaseModel);
this.followModel = yapi.getInst(followModel);
this.userModel = yapi.getInst(userModel);
}
/**
@ -109,7 +111,7 @@ class interfaceController extends baseController {
}
if (params.path.indexOf(":") > 0) {
let paths = params.path.split("/"), name, i;
let paths = params.path.split("/"), name, i;
for (i = 1; i < paths.length; i++) {
if (paths[i][0] === ':') {
name = paths[i].substr(1);
@ -123,7 +125,7 @@ class interfaceController extends baseController {
}
}
if ( params.req_params.length > 0) {
if (params.req_params.length > 0) {
data.type = 'var'
data.req_params = params.req_params;
} else {
@ -135,16 +137,26 @@ class interfaceController extends baseController {
let result = await this.Model.save(data);
// let project = await this.projectModel.get(params.project_id);
this.catModel.get(params.catid).then((cate) => {
let username = this.getUsername();
let title = `用户 "${username}" 为分类 "${cate.name}" 添加了接口 "${data.title}"`
yapi.commons.saveLog({
content: `用户 "${username}" 为分类 "${cate.name}" 添加了接口 "${data.title}"`,
content: title,
type: 'project',
uid: this.getUid(),
username: username,
typeid: params.project_id
});
//let project = await this.projectModel.getBaseInfo(params.project_id);
// let interfaceUrl = `http://${ctx.request.host}/project/${params.project_id}/interface/api/${result._id}`
// this.sendNotice(params.project_id, {
// title: `${username} 新增了接口 ${data.title}`,
// content: `<div><h3>${username}新增了接口(${data.title})</h3>
// <p>项目名:${project.name}</p>
// <p>修改用户: "${username}"</p>
// <p>接口名: <a href="${interfaceUrl}">${data.title}</a></p>
// <p>接口路径: [${data.method}]${data.path}</p></div>`
// })
});
ctx.body = yapi.commons.resReturn(result);
@ -282,6 +294,9 @@ class interfaceController extends baseController {
let id = ctx.request.body.id;
params.message = params.message || '';
params.message = params.message.replace(/\n/g, "<br>")
if (!id) {
return ctx.body = yapi.commons.resReturn(null, 400, '接口id不能为空');
}
@ -360,6 +375,8 @@ class interfaceController extends baseController {
data.status = params.status;
}
try {
let result = await this.Model.up(id, data);
let username = this.getUsername();
@ -385,7 +402,19 @@ class interfaceController extends baseController {
});
});
}
if (params.switch_notice === true) {
let project = await this.projectModel.getBaseInfo(interfaceData.project_id);
let interfaceUrl = `http://${ctx.request.host}/project/${interfaceData.project_id}/interface/api/${id}`
this.sendNotice(interfaceData.project_id, {
title: `${username} 更新了接口`,
content: `<div><h3>${username}更新了接口(${data.title})</h3>
<p>项目名${project.name} </p>
<p>修改用户: ${username}</p>
<p>接口名: <a href="${interfaceUrl}">${data.title}</a></p>
<p>接口路径: [${data.method}]${data.path}</p>
<p>详细改动日志: ${params.message}</p></div>`
})
}
ctx.body = yapi.commons.resReturn(result);
} catch (e) {
@ -580,6 +609,26 @@ class interfaceController extends baseController {
}
}
sendNotice(projectId, data) {
this.followModel.listByProjectId(projectId).then(list => {
let users = [];
list.forEach(item => {
users.push(item.uid)
})
this.userModel.findByUids(users).then(list => {
list.forEach(item => {
yapi.commons.sendMail({
to: item.email,
contents: data.content,
subject: data.title
});
})
})
});
}
}

View File

@ -23,7 +23,6 @@ function matchApi(apiPath, apiRule) {
module.exports = async (ctx, next) => {
yapi.commons.log('Server Recevie Request...');
let hostname = ctx.hostname;
let config = yapi.WEBCONFIG;
let path = ctx.path;

View File

@ -47,6 +47,12 @@ class followModel extends baseModel {
}).exec();
}
listByProjectId(projectid){
return this.model.find({
projectid: projectid
})
}
checkProjectRepeat(uid,projectid){
return this.model.count({

View File

@ -127,10 +127,11 @@ exports.sendMail = (options, cb) => {
yapi.mail.sendMail({
from: yapi.WEBCONFIG.mail.from,
to: options.to,
subject: 'yapi平台',
subject: options.subject,
html: options.contents
}, cb);
} catch (e) {
yapi.commons.log(e.message, 'error')
console.error(e.message); // eslint-disable-line
}
};

View File

@ -44,6 +44,10 @@ var _interfaceCase = require('../models/interfaceCase.js');
var _interfaceCase2 = _interopRequireDefault(_interfaceCase);
var _follow = require('../models/follow.js');
var _follow2 = _interopRequireDefault(_follow);
var _underscore = require('underscore');
var _underscore2 = _interopRequireDefault(_underscore);
@ -78,6 +82,8 @@ var interfaceController = function (_baseController) {
_this.catModel = _yapi2.default.getInst(_interfaceCat2.default);
_this.projectModel = _yapi2.default.getInst(_project2.default);
_this.caseModel = _yapi2.default.getInst(_interfaceCase2.default);
_this.followModel = _yapi2.default.getInst(_follow2.default);
_this.userModel = _yapi2.default.getInst(_user2.default);
return _this;
}
@ -249,16 +255,26 @@ var interfaceController = function (_baseController) {
result = _context.sent;
// let project = await this.projectModel.get(params.project_id);
this.catModel.get(params.catid).then(function (cate) {
var username = _this2.getUsername();
var title = '\u7528\u6237 "' + username + '" \u4E3A\u5206\u7C7B "' + cate.name + '" \u6DFB\u52A0\u4E86\u63A5\u53E3 "' + data.title + '"';
_yapi2.default.commons.saveLog({
content: '\u7528\u6237 "' + username + '" \u4E3A\u5206\u7C7B "' + cate.name + '" \u6DFB\u52A0\u4E86\u63A5\u53E3 "' + data.title + '"',
content: title,
type: 'project',
uid: _this2.getUid(),
username: username,
typeid: params.project_id
});
//let project = await this.projectModel.getBaseInfo(params.project_id);
// let interfaceUrl = `http://${ctx.request.host}/project/${params.project_id}/interface/api/${result._id}`
// this.sendNotice(params.project_id, {
// title: `${username} 新增了接口 ${data.title}`,
// content: `<div><h3>${username}新增了接口(${data.title})</h3>
// <p>项目名:${project.name}</p>
// <p>修改用户: "${username}"</p>
// <p>接口名: <a href="${interfaceUrl}">${data.title}</a></p>
// <p>接口路径: [${data.method}]${data.path}</p></div>`
// })
});
ctx.body = _yapi2.default.commons.resReturn(result);
@ -570,7 +586,7 @@ var interfaceController = function (_baseController) {
var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(ctx) {
var _this3 = this;
var params, id, interfaceData, auth, checkRepeat, data, result, username, cateid;
var params, id, interfaceData, auth, checkRepeat, data, result, username, cateid, project, interfaceUrl;
return _regenerator2.default.wrap(function _callee6$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
@ -590,60 +606,64 @@ var interfaceController = function (_baseController) {
id = ctx.request.body.id;
params.message = params.message || '';
params.message = params.message.replace(/\n/g, "<br>");
if (id) {
_context6.next = 7;
_context6.next = 9;
break;
}
return _context6.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 400, '接口id不能为空'));
case 7:
_context6.next = 9;
case 9:
_context6.next = 11;
return this.Model.get(id);
case 9:
case 11:
interfaceData = _context6.sent;
_context6.next = 12;
_context6.next = 14;
return this.checkAuth(interfaceData.project_id, 'project', 'edit');
case 12:
case 14:
auth = _context6.sent;
if (auth) {
_context6.next = 15;
_context6.next = 17;
break;
}
return _context6.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 400, '没有权限'));
case 15:
case 17:
if (!(params.path && !_yapi2.default.commons.verifyPath(params.path))) {
_context6.next = 17;
_context6.next = 19;
break;
}
return _context6.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 400, '接口path第一位必须是/,最后一位不能为/'));
case 17:
case 19:
if (!(params.path && (params.path !== interfaceData.path || params.method !== interfaceData.method))) {
_context6.next = 23;
_context6.next = 25;
break;
}
_context6.next = 20;
_context6.next = 22;
return this.Model.checkRepeat(interfaceData.project_id, params.path, params.method);
case 20:
case 22:
checkRepeat = _context6.sent;
if (!(checkRepeat > 0)) {
_context6.next = 23;
_context6.next = 25;
break;
}
return _context6.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 401, '已存在的接口:' + params.path + '[' + params.method + ']'));
case 23:
case 25:
data = {
up_time: _yapi2.default.commons.time()
};
@ -702,11 +722,11 @@ var interfaceController = function (_baseController) {
data.status = params.status;
}
_context6.prev = 38;
_context6.next = 41;
_context6.prev = 40;
_context6.next = 43;
return this.Model.up(id, data);
case 41:
case 43:
result = _context6.sent;
username = this.getUsername();
@ -734,22 +754,41 @@ var interfaceController = function (_baseController) {
});
}
if (!(params.switch_notice === true)) {
_context6.next = 52;
break;
}
_context6.next = 49;
return this.projectModel.getBaseInfo(interfaceData.project_id);
case 49:
project = _context6.sent;
interfaceUrl = 'http://' + ctx.request.host + '/project/' + interfaceData.project_id + '/interface/api/' + id;
this.sendNotice(interfaceData.project_id, {
title: username + ' \u66F4\u65B0\u4E86\u63A5\u53E3',
content: '<div><h3>' + username + '\u66F4\u65B0\u4E86\u63A5\u53E3(' + data.title + ')</h3>\n <p>\u9879\u76EE\u540D\uFF1A' + project.name + ' </p>\n <p>\u4FEE\u6539\u7528\u6237: ' + username + '</p>\n <p>\u63A5\u53E3\u540D: <a href="' + interfaceUrl + '">' + data.title + '</a></p>\n <p>\u63A5\u53E3\u8DEF\u5F84: [' + data.method + ']' + data.path + '</p>\n <p>\u8BE6\u7EC6\u6539\u52A8\u65E5\u5FD7: ' + params.message + '</p></div>'
});
case 52:
ctx.body = _yapi2.default.commons.resReturn(result);
_context6.next = 50;
_context6.next = 58;
break;
case 47:
_context6.prev = 47;
_context6.t0 = _context6['catch'](38);
case 55:
_context6.prev = 55;
_context6.t0 = _context6['catch'](40);
ctx.body = _yapi2.default.commons.resReturn(null, 402, _context6.t0.message);
case 50:
case 58:
case 'end':
return _context6.stop();
}
}
}, _callee6, this, [[38, 47]]);
}, _callee6, this, [[40, 55]]);
}));
function up(_x6) {
@ -1199,6 +1238,27 @@ var interfaceController = function (_baseController) {
return delCat;
}()
}, {
key: 'sendNotice',
value: function sendNotice(projectId, data) {
var _this6 = this;
this.followModel.listByProjectId(projectId).then(function (list) {
var users = [];
list.forEach(function (item) {
users.push(item.uid);
});
_this6.userModel.findByUids(users).then(function (list) {
list.forEach(function (item) {
_yapi2.default.commons.sendMail({
to: item.email,
contents: data.content,
subject: data.title
});
});
});
});
}
}]);
return interfaceController;
}(_base2.default);

View File

@ -55,7 +55,6 @@ module.exports = function () {
switch (_context.prev = _context.next) {
case 0:
_yapi2.default.commons.log('Server Recevie Request...');
hostname = ctx.hostname;
config = _yapi2.default.WEBCONFIG;
path = ctx.path;

View File

@ -87,6 +87,13 @@ var followModel = function (_baseModel) {
uid: uid
}).exec();
}
}, {
key: 'listByProjectId',
value: function listByProjectId(projectid) {
return this.model.find({
projectid: projectid
});
}
}, {
key: 'checkProjectRepeat',
value: function checkProjectRepeat(uid, projectid) {

View File

@ -155,10 +155,11 @@ exports.sendMail = function (options, cb) {
_yapi2.default.mail.sendMail({
from: _yapi2.default.WEBCONFIG.mail.from,
to: options.to,
subject: 'yapi平台',
subject: options.subject,
html: options.contents
}, cb);
} catch (e) {
_yapi2.default.commons.log(e.message, 'error');
console.error(e.message); // eslint-disable-line
}
};

View File

@ -31,7 +31,12 @@
<li class="">
<a href="start.html">快速开始</a>
<a href="usage.html">使用手册</a>
</li>
<li class="">
<a href="manage.html">管理学院</a>
</li>
<li class="">

View File

@ -31,7 +31,12 @@
<li class="">
<a href="start.html">快速开始</a>
<a href="usage.html">使用手册</a>
</li>
<li class="">
<a href="manage.html">管理学院</a>
</li>
<li class="">

View File

@ -0,0 +1,177 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta name="format-detection" content="telephone=no,email=no" />
<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>
<link rel="stylesheet" href="source/main.css" />
</head>
<body>
<div class="ydoc">
<header class="ydoc-header">
<div class="ydoc-header-area">
<a href="http://ued.qunar.com/ymfe/" class="navbar-brand">YMFE</a>
<button class="ydocIcon navbar-toggle">&#xf020;</button>
<nav class="ydoc-nav">
<ul class="navbar-left">
<li class="">
<a href="index.html">首页</a>
</li>
<li class="">
<a href="usage.html">使用手册</a>
</li>
<li class="active">
<a href="manage.html">管理学院</a>
</li>
<li class="">
<a href="mock.html">Mock功能</a>
</li>
<li class="">
<a href="api.html"></a>
</li>
</ul>
</nav>
</div>
</header>
<!-- <header style="height:20px"></header> -->
<!-- Docs page layout -->
<div class="ydoc-banner-bg">
<div class="ydoc-banner ">
<div class="ydoc-banner-area">
<h1 >管理学院</h1>
<p class="desc ">超级管理员、分组/项目组长的学院。</p>
</div>
</div>
<div class="ydoc-container">
<div class="ydoc-container-content ">
<div class="content-left staticsidenav" role="complementary">
<nav class="docs-sidebar hidden-print hidden-xs hidden-sm">
<ul class="nav docs-sidenav">
<!-- <li class="active" class="active" > -->
<li class="active" >
<a href="manage-介绍.html">介绍</a>
</li>
<!-- <li > -->
<li >
<a href="manage-部署.html">部署</a>
</li>
<!-- <li > -->
<li >
<a href="manage-超管职责.html">超管职责</a>
</li>
<!-- <li > -->
<li >
<a href="manage-版本升级.html">版本升级</a>
</li>
</ul>
</nav>
</div>
<div class="content-right markdown-body use-sidebar" role="main">
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="copyright">
&copy; 2016 <a href="http://ued.qunar.com/ymfe/">YMFE</a> Team. Build by <a href="http://ued.qunar.com/ydoc/">ydoc</a>.
</div>
</footer>
</div>
<div class="open-panel"></div>
<div class="mask"></div>
<script src="source/main.js"></script>
<script src="source/app.js"></script>
<script>
var lineHeight = 18;
var EXAMPLE_MAX_HEIGHT;
function fold() {
// 折叠code
$('.markdown-body pre').css({
"line-height": lineHeight + "px"
});
$('.markdown-body pre').map(function(i, item) {
var $item = $(item);
var foldnumber = $item.data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
if ($item.height() > EXAMPLE_MAX_HEIGHT) {
$item.css({
"padding-bottom": 30
});
$item.find('code').height(EXAMPLE_MAX_HEIGHT);
$item.append('<span class="extend">展开更多……</span>');
};
});
$('.ydoc-example').delegate('.extend', 'click', function() {
var $this = $(this);
$this.removeClass('extend').addClass('fold');
$this.html('折叠代码');
$this.parent().children('.js-code').height('auto');
$this.parent().height('auto');
});
$('.ydoc-example').delegate('.fold', 'click', function() {
var $this = $(this);
var foldnumber = $this.parent().data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
$this.removeClass('fold').addClass('extend');
$this.parent().height(EXAMPLE_MAX_HEIGHT); // pre
$this.parent().children('.js-code').height(EXAMPLE_MAX_HEIGHT); // code
$this.html("展开更多……");
});
}
$(document).ready(fold);
</script>
</body>
</html>

View File

@ -0,0 +1,178 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta name="format-detection" content="telephone=no,email=no" />
<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>
<link rel="stylesheet" href="source/main.css" />
</head>
<body>
<div class="ydoc">
<header class="ydoc-header">
<div class="ydoc-header-area">
<a href="http://ued.qunar.com/ymfe/" class="navbar-brand">YMFE</a>
<button class="ydocIcon navbar-toggle">&#xf020;</button>
<nav class="ydoc-nav">
<ul class="navbar-left">
<li class="">
<a href="index.html">首页</a>
</li>
<li class="">
<a href="usage.html">使用手册</a>
</li>
<li class="active">
<a href="manage.html">管理学院</a>
</li>
<li class="">
<a href="mock.html">Mock功能</a>
</li>
<li class="">
<a href="api.html"></a>
</li>
</ul>
</nav>
</div>
</header>
<!-- <header style="height:20px"></header> -->
<!-- Docs page layout -->
<div class="ydoc-banner-bg">
<div class="ydoc-banner ">
<div class="ydoc-banner-area">
<h1 >管理学院</h1>
<p class="desc ">超级管理员、分组/项目组长的学院。</p>
</div>
</div>
<div class="ydoc-container">
<div class="ydoc-container-content ">
<div class="content-left staticsidenav" role="complementary">
<nav class="docs-sidebar hidden-print hidden-xs hidden-sm">
<ul class="nav docs-sidenav">
<!-- <li > -->
<li >
<a href="manage-介绍.html">介绍</a>
</li>
<!-- <li > -->
<li >
<a href="manage-部署.html">部署</a>
</li>
<!-- <li > -->
<li >
<a href="manage-超管职责.html">超管职责</a>
</li>
<!-- <li class="active" class="active" > -->
<li class="active" >
<a href="manage-版本升级.html">版本升级</a>
</li>
</ul>
</nav>
</div>
<div class="content-right markdown-body use-sidebar" role="main">
<p>版本升级</p>
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="copyright">
&copy; 2016 <a href="http://ued.qunar.com/ymfe/">YMFE</a> Team. Build by <a href="http://ued.qunar.com/ydoc/">ydoc</a>.
</div>
</footer>
</div>
<div class="open-panel"></div>
<div class="mask"></div>
<script src="source/main.js"></script>
<script src="source/app.js"></script>
<script>
var lineHeight = 18;
var EXAMPLE_MAX_HEIGHT;
function fold() {
// 折叠code
$('.markdown-body pre').css({
"line-height": lineHeight + "px"
});
$('.markdown-body pre').map(function(i, item) {
var $item = $(item);
var foldnumber = $item.data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
if ($item.height() > EXAMPLE_MAX_HEIGHT) {
$item.css({
"padding-bottom": 30
});
$item.find('code').height(EXAMPLE_MAX_HEIGHT);
$item.append('<span class="extend">展开更多……</span>');
};
});
$('.ydoc-example').delegate('.extend', 'click', function() {
var $this = $(this);
$this.removeClass('extend').addClass('fold');
$this.html('折叠代码');
$this.parent().children('.js-code').height('auto');
$this.parent().height('auto');
});
$('.ydoc-example').delegate('.fold', 'click', function() {
var $this = $(this);
var foldnumber = $this.parent().data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
$this.removeClass('fold').addClass('extend');
$this.parent().height(EXAMPLE_MAX_HEIGHT); // pre
$this.parent().children('.js-code').height(EXAMPLE_MAX_HEIGHT); // code
$this.html("展开更多……");
});
}
$(document).ready(fold);
</script>
</body>
</html>

View File

@ -0,0 +1,193 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta name="format-detection" content="telephone=no,email=no" />
<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>
<link rel="stylesheet" href="source/main.css" />
</head>
<body>
<div class="ydoc">
<header class="ydoc-header">
<div class="ydoc-header-area">
<a href="http://ued.qunar.com/ymfe/" class="navbar-brand">YMFE</a>
<button class="ydocIcon navbar-toggle">&#xf020;</button>
<nav class="ydoc-nav">
<ul class="navbar-left">
<li class="">
<a href="index.html">首页</a>
</li>
<li class="">
<a href="usage.html">使用手册</a>
</li>
<li class="active">
<a href="manage.html">管理学院</a>
</li>
<li class="">
<a href="mock.html">Mock功能</a>
</li>
<li class="">
<a href="api.html"></a>
</li>
</ul>
</nav>
</div>
</header>
<!-- <header style="height:20px"></header> -->
<!-- Docs page layout -->
<div class="ydoc-banner-bg">
<div class="ydoc-banner ">
<div class="ydoc-banner-area">
<h1 >管理学院</h1>
<p class="desc ">超级管理员、分组/项目组长的学院。</p>
</div>
</div>
<div class="ydoc-container">
<div class="ydoc-container-content ">
<div class="content-left staticsidenav" role="complementary">
<nav class="docs-sidebar hidden-print hidden-xs hidden-sm">
<ul class="nav docs-sidenav">
<!-- <li > -->
<li >
<a href="manage-介绍.html">介绍</a>
</li>
<!-- <li > -->
<li >
<a href="manage-部署.html">部署</a>
</li>
<!-- <li class="active" class="active" > -->
<li class="active" >
<a href="manage-超管职责.html">超管职责</a>
</li>
<ul class="nav docs-sidenav-extend" >
<li >
<a href="#用户管理">用户管理</a>
</li>
<li >
<a href="#分配组长">分配组长</a>
</li>
<li >
<a href="#维护数据库">维护数据库</a>
</li>
</ul>
<!-- <li > -->
<li >
<a href="manage-版本升级.html">版本升级</a>
</li>
</ul>
</nav>
</div>
<div class="content-right markdown-body use-sidebar" role="main">
<h2 class="subject" id="用户管理">用户管理 <a class="hashlink" href="#用户管理">#</a></h2><h2 class="subject" id="分配组长">分配组长 <a class="hashlink" href="#分配组长">#</a></h2><h2 class="subject" id="维护数据库">维护数据库 <a class="hashlink" href="#维护数据库">#</a></h2>
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="copyright">
&copy; 2016 <a href="http://ued.qunar.com/ymfe/">YMFE</a> Team. Build by <a href="http://ued.qunar.com/ydoc/">ydoc</a>.
</div>
</footer>
</div>
<div class="open-panel"></div>
<div class="mask"></div>
<script src="source/main.js"></script>
<script src="source/app.js"></script>
<script>
var lineHeight = 18;
var EXAMPLE_MAX_HEIGHT;
function fold() {
// 折叠code
$('.markdown-body pre').css({
"line-height": lineHeight + "px"
});
$('.markdown-body pre').map(function(i, item) {
var $item = $(item);
var foldnumber = $item.data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
if ($item.height() > EXAMPLE_MAX_HEIGHT) {
$item.css({
"padding-bottom": 30
});
$item.find('code').height(EXAMPLE_MAX_HEIGHT);
$item.append('<span class="extend">展开更多……</span>');
};
});
$('.ydoc-example').delegate('.extend', 'click', function() {
var $this = $(this);
$this.removeClass('extend').addClass('fold');
$this.html('折叠代码');
$this.parent().children('.js-code').height('auto');
$this.parent().height('auto');
});
$('.ydoc-example').delegate('.fold', 'click', function() {
var $this = $(this);
var foldnumber = $this.parent().data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
$this.removeClass('fold').addClass('extend');
$this.parent().height(EXAMPLE_MAX_HEIGHT); // pre
$this.parent().children('.js-code').height(EXAMPLE_MAX_HEIGHT); // code
$this.html("展开更多……");
});
}
$(document).ready(fold);
</script>
</body>
</html>

View File

@ -0,0 +1,189 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta name="format-detection" content="telephone=no,email=no" />
<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>
<link rel="stylesheet" href="source/main.css" />
</head>
<body>
<div class="ydoc">
<header class="ydoc-header">
<div class="ydoc-header-area">
<a href="http://ued.qunar.com/ymfe/" class="navbar-brand">YMFE</a>
<button class="ydocIcon navbar-toggle">&#xf020;</button>
<nav class="ydoc-nav">
<ul class="navbar-left">
<li class="">
<a href="index.html">首页</a>
</li>
<li class="">
<a href="usage.html">使用手册</a>
</li>
<li class="active">
<a href="manage.html">管理学院</a>
</li>
<li class="">
<a href="mock.html">Mock功能</a>
</li>
<li class="">
<a href="api.html"></a>
</li>
</ul>
</nav>
</div>
</header>
<!-- <header style="height:20px"></header> -->
<!-- Docs page layout -->
<div class="ydoc-banner-bg">
<div class="ydoc-banner ">
<div class="ydoc-banner-area">
<h1 >管理学院</h1>
<p class="desc ">超级管理员、分组/项目组长的学院。</p>
</div>
</div>
<div class="ydoc-container">
<div class="ydoc-container-content ">
<div class="content-left staticsidenav" role="complementary">
<nav class="docs-sidebar hidden-print hidden-xs hidden-sm">
<ul class="nav docs-sidenav">
<!-- <li > -->
<li >
<a href="manage-介绍.html">介绍</a>
</li>
<!-- <li class="active" class="active" > -->
<li class="active" >
<a href="manage-部署.html">部署</a>
</li>
<ul class="nav docs-sidenav-extend" >
<li >
<a href="#快速部署">快速部署</a>
</li>
<li >
<a href="#配置说明">配置说明</a>
</li>
</ul>
<!-- <li > -->
<li >
<a href="manage-超管职责.html">超管职责</a>
</li>
<!-- <li > -->
<li >
<a href="manage-版本升级.html">版本升级</a>
</li>
</ul>
</nav>
</div>
<div class="content-right markdown-body use-sidebar" role="main">
<h2 class="subject" id="快速部署">快速部署 <a class="hashlink" href="#快速部署">#</a></h2><h2 class="subject" id="配置说明">配置说明 <a class="hashlink" href="#配置说明">#</a></h2>
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="copyright">
&copy; 2016 <a href="http://ued.qunar.com/ymfe/">YMFE</a> Team. Build by <a href="http://ued.qunar.com/ydoc/">ydoc</a>.
</div>
</footer>
</div>
<div class="open-panel"></div>
<div class="mask"></div>
<script src="source/main.js"></script>
<script src="source/app.js"></script>
<script>
var lineHeight = 18;
var EXAMPLE_MAX_HEIGHT;
function fold() {
// 折叠code
$('.markdown-body pre').css({
"line-height": lineHeight + "px"
});
$('.markdown-body pre').map(function(i, item) {
var $item = $(item);
var foldnumber = $item.data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
if ($item.height() > EXAMPLE_MAX_HEIGHT) {
$item.css({
"padding-bottom": 30
});
$item.find('code').height(EXAMPLE_MAX_HEIGHT);
$item.append('<span class="extend">展开更多……</span>');
};
});
$('.ydoc-example').delegate('.extend', 'click', function() {
var $this = $(this);
$this.removeClass('extend').addClass('fold');
$this.html('折叠代码');
$this.parent().children('.js-code').height('auto');
$this.parent().height('auto');
});
$('.ydoc-example').delegate('.fold', 'click', function() {
var $this = $(this);
var foldnumber = $this.parent().data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
$this.removeClass('fold').addClass('extend');
$this.parent().height(EXAMPLE_MAX_HEIGHT); // pre
$this.parent().children('.js-code').height(EXAMPLE_MAX_HEIGHT); // code
$this.html("展开更多……");
});
}
$(document).ready(fold);
</script>
</body>
</html>

177
static/doc/manage.html Normal file
View File

@ -0,0 +1,177 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta name="format-detection" content="telephone=no,email=no" />
<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>
<link rel="stylesheet" href="source/main.css" />
</head>
<body>
<div class="ydoc">
<header class="ydoc-header">
<div class="ydoc-header-area">
<a href="http://ued.qunar.com/ymfe/" class="navbar-brand">YMFE</a>
<button class="ydocIcon navbar-toggle">&#xf020;</button>
<nav class="ydoc-nav">
<ul class="navbar-left">
<li class="">
<a href="index.html">首页</a>
</li>
<li class="">
<a href="usage.html">使用手册</a>
</li>
<li class="active">
<a href="manage.html">管理学院</a>
</li>
<li class="">
<a href="mock.html">Mock功能</a>
</li>
<li class="">
<a href="api.html"></a>
</li>
</ul>
</nav>
</div>
</header>
<!-- <header style="height:20px"></header> -->
<!-- Docs page layout -->
<div class="ydoc-banner-bg">
<div class="ydoc-banner ">
<div class="ydoc-banner-area">
<h1 >管理学院</h1>
<p class="desc ">超级管理员、分组/项目组长的学院。</p>
</div>
</div>
<div class="ydoc-container">
<div class="ydoc-container-content ">
<div class="content-left staticsidenav" role="complementary">
<nav class="docs-sidebar hidden-print hidden-xs hidden-sm">
<ul class="nav docs-sidenav">
<!-- <li > -->
<li >
<a href="manage-介绍.html">介绍</a>
</li>
<!-- <li > -->
<li >
<a href="manage-部署.html">部署</a>
</li>
<!-- <li > -->
<li >
<a href="manage-超管职责.html">超管职责</a>
</li>
<!-- <li > -->
<li >
<a href="manage-版本升级.html">版本升级</a>
</li>
</ul>
</nav>
</div>
<div class="content-right markdown-body use-sidebar" role="main">
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="copyright">
&copy; 2016 <a href="http://ued.qunar.com/ymfe/">YMFE</a> Team. Build by <a href="http://ued.qunar.com/ydoc/">ydoc</a>.
</div>
</footer>
</div>
<div class="open-panel"></div>
<div class="mask"></div>
<script src="source/main.js"></script>
<script src="source/app.js"></script>
<script>
var lineHeight = 18;
var EXAMPLE_MAX_HEIGHT;
function fold() {
// 折叠code
$('.markdown-body pre').css({
"line-height": lineHeight + "px"
});
$('.markdown-body pre').map(function(i, item) {
var $item = $(item);
var foldnumber = $item.data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
if ($item.height() > EXAMPLE_MAX_HEIGHT) {
$item.css({
"padding-bottom": 30
});
$item.find('code').height(EXAMPLE_MAX_HEIGHT);
$item.append('<span class="extend">展开更多……</span>');
};
});
$('.ydoc-example').delegate('.extend', 'click', function() {
var $this = $(this);
$this.removeClass('extend').addClass('fold');
$this.html('折叠代码');
$this.parent().children('.js-code').height('auto');
$this.parent().height('auto');
});
$('.ydoc-example').delegate('.fold', 'click', function() {
var $this = $(this);
var foldnumber = $this.parent().data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
$this.removeClass('fold').addClass('extend');
$this.parent().height(EXAMPLE_MAX_HEIGHT); // pre
$this.parent().children('.js-code').height(EXAMPLE_MAX_HEIGHT); // code
$this.html("展开更多……");
});
}
$(document).ready(fold);
</script>
</body>
</html>

View File

@ -0,0 +1,211 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta name="format-detection" content="telephone=no,email=no" />
<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 Mock功能</title>
<link rel="stylesheet" href="source/main.css" />
</head>
<body>
<div class="ydoc">
<header class="ydoc-header">
<div class="ydoc-header-area">
<a href="http://ued.qunar.com/ymfe/" class="navbar-brand">YMFE</a>
<button class="ydocIcon navbar-toggle">&#xf020;</button>
<nav class="ydoc-nav">
<ul class="navbar-left">
<li class="">
<a href="index.html">首页</a>
</li>
<li class="">
<a href="usage.html">使用手册</a>
</li>
<li class="">
<a href="manage.html">管理学院</a>
</li>
<li class="active">
<a href="mock.html">Mock功能</a>
</li>
<li class="">
<a href="api.html"></a>
</li>
</ul>
</nav>
</div>
</header>
<!-- <header style="height:20px"></header> -->
<!-- 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">
<div class="ydoc-container-content ">
<div class="content-left staticsidenav" role="complementary">
<nav class="docs-sidebar hidden-print hidden-xs hidden-sm">
<ul class="nav docs-sidenav">
<!-- <li > -->
<li >
<a href="mock-认识 YApi.html">认识 YApi</a>
</li>
<!-- <li > -->
<li >
<a href="mock-创建第一个API.html">创建第一个API</a>
</li>
<!-- <li > -->
<li >
<a href="mock-接口配置.html">接口配置</a>
</li>
<!-- <li class="active" class="active" > -->
<li class="active" >
<a href="mock-使用mock功能.html">使用mock功能</a>
</li>
<ul class="nav docs-sidenav-extend" >
<li >
<a href="#介绍">介绍</a>
</li>
<li >
<a href="#使用说明">使用说明</a>
</li>
<li >
<a href="#模板语法">模板语法</a>
</li>
</ul>
<!-- <li > -->
<li >
<a href="mock-使用测试集.html">使用测试集</a>
</li>
<!-- <li > -->
<li >
<a href="mock-成为组长.html">成为组长</a>
</li>
<!-- <li > -->
<li >
<a href="mock-权限列表.html">权限列表</a>
</li>
</ul>
</nav>
</div>
<div class="content-right markdown-body use-sidebar" role="main">
<h2 class="subject" id="介绍">介绍 <a class="hashlink" href="#介绍">#</a></h2><h2 class="subject" id="使用说明">使用说明 <a class="hashlink" href="#使用说明">#</a></h2><h2 class="subject" id="模板语法">模板语法 <a class="hashlink" href="#模板语法">#</a></h2>
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="copyright">
&copy; 2016 <a href="http://ued.qunar.com/ymfe/">YMFE</a> Team. Build by <a href="http://ued.qunar.com/ydoc/">ydoc</a>.
</div>
</footer>
</div>
<div class="open-panel"></div>
<div class="mask"></div>
<script src="source/main.js"></script>
<script src="source/app.js"></script>
<script>
var lineHeight = 18;
var EXAMPLE_MAX_HEIGHT;
function fold() {
// 折叠code
$('.markdown-body pre').css({
"line-height": lineHeight + "px"
});
$('.markdown-body pre').map(function(i, item) {
var $item = $(item);
var foldnumber = $item.data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
if ($item.height() > EXAMPLE_MAX_HEIGHT) {
$item.css({
"padding-bottom": 30
});
$item.find('code').height(EXAMPLE_MAX_HEIGHT);
$item.append('<span class="extend">展开更多……</span>');
};
});
$('.ydoc-example').delegate('.extend', 'click', function() {
var $this = $(this);
$this.removeClass('extend').addClass('fold');
$this.html('折叠代码');
$this.parent().children('.js-code').height('auto');
$this.parent().height('auto');
});
$('.ydoc-example').delegate('.fold', 'click', function() {
var $this = $(this);
var foldnumber = $this.parent().data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
$this.removeClass('fold').addClass('extend');
$this.parent().height(EXAMPLE_MAX_HEIGHT); // pre
$this.parent().children('.js-code').height(EXAMPLE_MAX_HEIGHT); // code
$this.html("展开更多……");
});
}
$(document).ready(fold);
</script>
</body>
</html>

View File

@ -0,0 +1,207 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta name="format-detection" content="telephone=no,email=no" />
<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 Mock功能</title>
<link rel="stylesheet" href="source/main.css" />
</head>
<body>
<div class="ydoc">
<header class="ydoc-header">
<div class="ydoc-header-area">
<a href="http://ued.qunar.com/ymfe/" class="navbar-brand">YMFE</a>
<button class="ydocIcon navbar-toggle">&#xf020;</button>
<nav class="ydoc-nav">
<ul class="navbar-left">
<li class="">
<a href="index.html">首页</a>
</li>
<li class="">
<a href="usage.html">使用手册</a>
</li>
<li class="">
<a href="manage.html">管理学院</a>
</li>
<li class="active">
<a href="mock.html">Mock功能</a>
</li>
<li class="">
<a href="api.html"></a>
</li>
</ul>
</nav>
</div>
</header>
<!-- <header style="height:20px"></header> -->
<!-- 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">
<div class="ydoc-container-content ">
<div class="content-left staticsidenav" role="complementary">
<nav class="docs-sidebar hidden-print hidden-xs hidden-sm">
<ul class="nav docs-sidenav">
<!-- <li > -->
<li >
<a href="mock-认识 YApi.html">认识 YApi</a>
</li>
<!-- <li > -->
<li >
<a href="mock-创建第一个API.html">创建第一个API</a>
</li>
<!-- <li > -->
<li >
<a href="mock-接口配置.html">接口配置</a>
</li>
<!-- <li > -->
<li >
<a href="mock-使用mock功能.html">使用mock功能</a>
</li>
<!-- <li class="active" class="active" > -->
<li class="active" >
<a href="mock-使用测试集.html">使用测试集</a>
</li>
<ul class="nav docs-sidenav-extend" >
<li >
<a href="#介绍">介绍</a>
</li>
<li >
<a href="#使用说明">使用说明</a>
</li>
</ul>
<!-- <li > -->
<li >
<a href="mock-成为组长.html">成为组长</a>
</li>
<!-- <li > -->
<li >
<a href="mock-权限列表.html">权限列表</a>
</li>
</ul>
</nav>
</div>
<div class="content-right markdown-body use-sidebar" role="main">
<h2 class="subject" id="介绍">介绍 <a class="hashlink" href="#介绍">#</a></h2><h2 class="subject" id="使用说明">使用说明 <a class="hashlink" href="#使用说明">#</a></h2>
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="copyright">
&copy; 2016 <a href="http://ued.qunar.com/ymfe/">YMFE</a> Team. Build by <a href="http://ued.qunar.com/ydoc/">ydoc</a>.
</div>
</footer>
</div>
<div class="open-panel"></div>
<div class="mask"></div>
<script src="source/main.js"></script>
<script src="source/app.js"></script>
<script>
var lineHeight = 18;
var EXAMPLE_MAX_HEIGHT;
function fold() {
// 折叠code
$('.markdown-body pre').css({
"line-height": lineHeight + "px"
});
$('.markdown-body pre').map(function(i, item) {
var $item = $(item);
var foldnumber = $item.data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
if ($item.height() > EXAMPLE_MAX_HEIGHT) {
$item.css({
"padding-bottom": 30
});
$item.find('code').height(EXAMPLE_MAX_HEIGHT);
$item.append('<span class="extend">展开更多……</span>');
};
});
$('.ydoc-example').delegate('.extend', 'click', function() {
var $this = $(this);
$this.removeClass('extend').addClass('fold');
$this.html('折叠代码');
$this.parent().children('.js-code').height('auto');
$this.parent().height('auto');
});
$('.ydoc-example').delegate('.fold', 'click', function() {
var $this = $(this);
var foldnumber = $this.parent().data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
$this.removeClass('fold').addClass('extend');
$this.parent().height(EXAMPLE_MAX_HEIGHT); // pre
$this.parent().children('.js-code').height(EXAMPLE_MAX_HEIGHT); // code
$this.html("展开更多……");
});
}
$(document).ready(fold);
</script>
</body>
</html>

View File

@ -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 Mock功能</title>
<link rel="stylesheet" href="source/main.css" />
@ -29,13 +29,18 @@
<a href="index.html">首页</a>
</li>
<li class="active">
<li class="">
<a href="start.html">快速开始</a>
<a href="usage.html">使用手册</a>
</li>
<li class="">
<a href="manage.html">管理学院</a>
</li>
<li class="active">
<a href="mock.html">Mock功能</a>
</li>
@ -75,40 +80,73 @@
<!-- <li > -->
<li >
<a href="#快速开始">快速开始</a>
<a href="mock-认识 YApi.html">认识 YApi</a>
</li>
<!-- <li class="active" class="active" > -->
<li class="active" >
<a href="mock-创建第一个API.html">创建第一个API</a>
</li>
<ul class="nav docs-sidenav-extend" >
<li >
<a href="#1_创建项目分组">1 创建项目分组</a>
<a href="#起步">起步</a>
</li>
<li >
<a href="#3_添加项目">3 添加项目</a>
</li>
<li >
<a href="#4_项目详情页面">4 项目详情页面</a>
</li>
</ul>
<!-- <li > -->
<li >
<a href="mock-接口配置.html">接口配置</a>
</li>
<!-- <li > -->
<li >
<a href="mock-使用mock功能.html">使用mock功能</a>
</li>
<!-- <li > -->
<li >
<a href="mock-使用测试集.html">使用测试集</a>
</li>
<!-- <li > -->
<li >
<a href="mock-成为组长.html">成为组长</a>
</li>
<!-- <li > -->
<li >
<a href="mock-权限列表.html">权限列表</a>
</li>
</ul>
</nav>
</div>
<div class="content-right markdown-body use-sidebar" role="main">
<h2 class="subject" id="快速开始">快速开始 <a class="hashlink" href="#快速开始">#</a></h2><h3 class="subject" id="1_创建项目分组">1 创建项目分组 <a class="hashlink" href="#1_创建项目分组">#</a></h3><p>登录之后进到项目首页,左边侧边栏显示的即分组列表。</p>
<h2 class="subject" id="起步">起步 <a class="hashlink" href="#起步">#</a></h2><h3 class="subject" id="创建API">创建API <a class="hashlink" href="#创建API">#</a></h3><p>注册新用户或使用 QSSO 登录。</p>
<p>新用户进入 YApi 时没有任何权限,只能浏览公开项目,想要创建 API 应联系 <code>组长</code> 将你添加到某分组或某项目中。
登录之后进到项目首页,左边侧边栏显示的即分组列表。</p>
<p><img src="./images/project_group.png" width = "200" style="margin-left:170px;display:block;" alt="图片名称" align=center /></p>
<p>联系管理员添加分组并且把你设置为组长或让组长邀请你加入到某项目分组</p>
<h4 class="subject" id="2_项目列表">2 项目列表 <a class="hashlink" href="#2_项目列表">#</a></h4><p>选中不同的分组,右边会显示该分组下的项目列表。</p>
<h4 class="subject" id="项目列表">项目列表 <a class="hashlink" href="#项目列表">#</a></h4><p>选中不同的分组,右边会显示该分组下的项目列表。</p>
<p><img src="./images/project_list.png" width = "800" style="margin:0px auto;display:block;" alt="图片名称" align=center /></p>
<h3 class="subject" id="3_添加项目">3 添加项目 <a class="hashlink" href="#3_添加项目">#</a></h3><h4 class="subject" id="3.1_点击右上角的“+“号进入添加项目页面">3.1 点击右上角的“+“号进入添加项目页面 <a class="hashlink" href="#3.1_点击右上角的“+“号进入添加项目页面">#</a></h4><p><img src="./images/project_add.png" width = "100%" style="margin:0px auto;display:block;" alt="图片名称" align=center /></p>
<h4 class="subject" id="3.2_添加项目页面">3.2 添加项目页面 <a class="hashlink" href="#3.2_添加项目页面">#</a></h4><p><img src="./images/project_add_view.png" width = "100%" style="margin:0px auto;display:block;" alt="图片名称" align=center />
<h3 class="subject" id="添加项目">添加项目 <a class="hashlink" href="#添加项目">#</a></h3><ul>
<li><p>点击右上角的“+“号进入添加项目页面
<img src="./images/project_add.png" width = "100%" style="margin:0px auto;display:block;" alt="图片名称" align=center /></p>
</li><li><p>添加项目页面
<img src="./images/project_add_view.png" width = "100%" style="margin:0px auto;display:block;" alt="图片名称" align=center />
添加完成后进去项目详情页面</p>
<h3 class="subject" id="4_项目详情页面">4 项目详情页面 <a class="hashlink" href="#4_项目详情页面">#</a></h3><h4 class="subject" id="4.1_添加接口分类">4.1 添加接口分类 <a class="hashlink" href="#4.1_添加接口分类">#</a></h4><p><img src="./images/interface_add_cat.png" width = "800" style="margin:0px auto;display:block;" alt="图片名称" align=center /></p>
</li></ul>
<h3 class="subject" id="项目详情页面">项目详情页面 <a class="hashlink" href="#项目详情页面">#</a></h3><h4 class="subject" id="添加接口分类">添加接口分类 <a class="hashlink" href="#添加接口分类">#</a></h4><p><img src="./images/interface_add_cat.png" width = "800" style="margin:0px auto;display:block;" alt="图片名称" align=center /></p>
<p>添加完成后可以在左侧列表看到新添加的接口分类</p>
<h4 class="subject" id="4.2_添加接口">4.2 添加接口 <a class="hashlink" href="#4.2_添加接口">#</a></h4><p>鼠标移动到接口分类的菜单icon点击添加接口</p>
<p><img src="./images/interface_add.png" width="400" style="margin:0px auto;display:block;" alt="图片名称" align=center /></p>

View File

@ -0,0 +1,207 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta name="format-detection" content="telephone=no,email=no" />
<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 Mock功能</title>
<link rel="stylesheet" href="source/main.css" />
</head>
<body>
<div class="ydoc">
<header class="ydoc-header">
<div class="ydoc-header-area">
<a href="http://ued.qunar.com/ymfe/" class="navbar-brand">YMFE</a>
<button class="ydocIcon navbar-toggle">&#xf020;</button>
<nav class="ydoc-nav">
<ul class="navbar-left">
<li class="">
<a href="index.html">首页</a>
</li>
<li class="">
<a href="usage.html">使用手册</a>
</li>
<li class="">
<a href="manage.html">管理学院</a>
</li>
<li class="active">
<a href="mock.html">Mock功能</a>
</li>
<li class="">
<a href="api.html"></a>
</li>
</ul>
</nav>
</div>
</header>
<!-- <header style="height:20px"></header> -->
<!-- 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">
<div class="ydoc-container-content ">
<div class="content-left staticsidenav" role="complementary">
<nav class="docs-sidebar hidden-print hidden-xs hidden-sm">
<ul class="nav docs-sidenav">
<!-- <li > -->
<li >
<a href="mock-认识 YApi.html">认识 YApi</a>
</li>
<!-- <li > -->
<li >
<a href="mock-创建第一个API.html">创建第一个API</a>
</li>
<!-- <li > -->
<li >
<a href="mock-接口配置.html">接口配置</a>
</li>
<!-- <li > -->
<li >
<a href="mock-使用mock功能.html">使用mock功能</a>
</li>
<!-- <li > -->
<li >
<a href="mock-使用测试集.html">使用测试集</a>
</li>
<!-- <li class="active" class="active" > -->
<li class="active" >
<a href="mock-成为组长.html">成为组长</a>
</li>
<ul class="nav docs-sidenav-extend" >
<li >
<a href="#什么是组长">什么是组长</a>
</li>
<li >
<a href="#组长职责">组长职责</a>
</li>
</ul>
<!-- <li > -->
<li >
<a href="mock-权限列表.html">权限列表</a>
</li>
</ul>
</nav>
</div>
<div class="content-right markdown-body use-sidebar" role="main">
<h2 class="subject" id="什么是组长">什么是组长 <a class="hashlink" href="#什么是组长">#</a></h2><h2 class="subject" id="组长职责">组长职责 <a class="hashlink" href="#组长职责">#</a></h2>
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="copyright">
&copy; 2016 <a href="http://ued.qunar.com/ymfe/">YMFE</a> Team. Build by <a href="http://ued.qunar.com/ydoc/">ydoc</a>.
</div>
</footer>
</div>
<div class="open-panel"></div>
<div class="mask"></div>
<script src="source/main.js"></script>
<script src="source/app.js"></script>
<script>
var lineHeight = 18;
var EXAMPLE_MAX_HEIGHT;
function fold() {
// 折叠code
$('.markdown-body pre').css({
"line-height": lineHeight + "px"
});
$('.markdown-body pre').map(function(i, item) {
var $item = $(item);
var foldnumber = $item.data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
if ($item.height() > EXAMPLE_MAX_HEIGHT) {
$item.css({
"padding-bottom": 30
});
$item.find('code').height(EXAMPLE_MAX_HEIGHT);
$item.append('<span class="extend">展开更多……</span>');
};
});
$('.ydoc-example').delegate('.extend', 'click', function() {
var $this = $(this);
$this.removeClass('extend').addClass('fold');
$this.html('折叠代码');
$this.parent().children('.js-code').height('auto');
$this.parent().height('auto');
});
$('.ydoc-example').delegate('.fold', 'click', function() {
var $this = $(this);
var foldnumber = $this.parent().data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
$this.removeClass('fold').addClass('extend');
$this.parent().height(EXAMPLE_MAX_HEIGHT); // pre
$this.parent().children('.js-code').height(EXAMPLE_MAX_HEIGHT); // code
$this.html("展开更多……");
});
}
$(document).ready(fold);
</script>
</body>
</html>

View File

@ -0,0 +1,207 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta name="format-detection" content="telephone=no,email=no" />
<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 Mock功能</title>
<link rel="stylesheet" href="source/main.css" />
</head>
<body>
<div class="ydoc">
<header class="ydoc-header">
<div class="ydoc-header-area">
<a href="http://ued.qunar.com/ymfe/" class="navbar-brand">YMFE</a>
<button class="ydocIcon navbar-toggle">&#xf020;</button>
<nav class="ydoc-nav">
<ul class="navbar-left">
<li class="">
<a href="index.html">首页</a>
</li>
<li class="">
<a href="usage.html">使用手册</a>
</li>
<li class="">
<a href="manage.html">管理学院</a>
</li>
<li class="active">
<a href="mock.html">Mock功能</a>
</li>
<li class="">
<a href="api.html"></a>
</li>
</ul>
</nav>
</div>
</header>
<!-- <header style="height:20px"></header> -->
<!-- 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">
<div class="ydoc-container-content ">
<div class="content-left staticsidenav" role="complementary">
<nav class="docs-sidebar hidden-print hidden-xs hidden-sm">
<ul class="nav docs-sidenav">
<!-- <li > -->
<li >
<a href="mock-认识 YApi.html">认识 YApi</a>
</li>
<!-- <li > -->
<li >
<a href="mock-创建第一个API.html">创建第一个API</a>
</li>
<!-- <li class="active" class="active" > -->
<li class="active" >
<a href="mock-接口配置.html">接口配置</a>
</li>
<ul class="nav docs-sidenav-extend" >
<li >
<a href="#介绍">介绍</a>
</li>
<li >
<a href="#配置说明">配置说明</a>
</li>
</ul>
<!-- <li > -->
<li >
<a href="mock-使用mock功能.html">使用mock功能</a>
</li>
<!-- <li > -->
<li >
<a href="mock-使用测试集.html">使用测试集</a>
</li>
<!-- <li > -->
<li >
<a href="mock-成为组长.html">成为组长</a>
</li>
<!-- <li > -->
<li >
<a href="mock-权限列表.html">权限列表</a>
</li>
</ul>
</nav>
</div>
<div class="content-right markdown-body use-sidebar" role="main">
<h2 class="subject" id="介绍">介绍 <a class="hashlink" href="#介绍">#</a></h2><h2 class="subject" id="配置说明">配置说明 <a class="hashlink" href="#配置说明">#</a></h2>
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="copyright">
&copy; 2016 <a href="http://ued.qunar.com/ymfe/">YMFE</a> Team. Build by <a href="http://ued.qunar.com/ydoc/">ydoc</a>.
</div>
</footer>
</div>
<div class="open-panel"></div>
<div class="mask"></div>
<script src="source/main.js"></script>
<script src="source/app.js"></script>
<script>
var lineHeight = 18;
var EXAMPLE_MAX_HEIGHT;
function fold() {
// 折叠code
$('.markdown-body pre').css({
"line-height": lineHeight + "px"
});
$('.markdown-body pre').map(function(i, item) {
var $item = $(item);
var foldnumber = $item.data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
if ($item.height() > EXAMPLE_MAX_HEIGHT) {
$item.css({
"padding-bottom": 30
});
$item.find('code').height(EXAMPLE_MAX_HEIGHT);
$item.append('<span class="extend">展开更多……</span>');
};
});
$('.ydoc-example').delegate('.extend', 'click', function() {
var $this = $(this);
$this.removeClass('extend').addClass('fold');
$this.html('折叠代码');
$this.parent().children('.js-code').height('auto');
$this.parent().height('auto');
});
$('.ydoc-example').delegate('.fold', 'click', function() {
var $this = $(this);
var foldnumber = $this.parent().data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
$this.removeClass('fold').addClass('extend');
$this.parent().height(EXAMPLE_MAX_HEIGHT); // pre
$this.parent().children('.js-code').height(EXAMPLE_MAX_HEIGHT); // code
$this.html("展开更多……");
});
}
$(document).ready(fold);
</script>
</body>
</html>

View File

@ -0,0 +1,195 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta name="format-detection" content="telephone=no,email=no" />
<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 Mock功能</title>
<link rel="stylesheet" href="source/main.css" />
</head>
<body>
<div class="ydoc">
<header class="ydoc-header">
<div class="ydoc-header-area">
<a href="http://ued.qunar.com/ymfe/" class="navbar-brand">YMFE</a>
<button class="ydocIcon navbar-toggle">&#xf020;</button>
<nav class="ydoc-nav">
<ul class="navbar-left">
<li class="">
<a href="index.html">首页</a>
</li>
<li class="">
<a href="usage.html">使用手册</a>
</li>
<li class="">
<a href="manage.html">管理学院</a>
</li>
<li class="active">
<a href="mock.html">Mock功能</a>
</li>
<li class="">
<a href="api.html"></a>
</li>
</ul>
</nav>
</div>
</header>
<!-- <header style="height:20px"></header> -->
<!-- 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">
<div class="ydoc-container-content ">
<div class="content-left staticsidenav" role="complementary">
<nav class="docs-sidebar hidden-print hidden-xs hidden-sm">
<ul class="nav docs-sidenav">
<!-- <li > -->
<li >
<a href="mock-认识 YApi.html">认识 YApi</a>
</li>
<!-- <li > -->
<li >
<a href="mock-创建第一个API.html">创建第一个API</a>
</li>
<!-- <li > -->
<li >
<a href="mock-接口配置.html">接口配置</a>
</li>
<!-- <li > -->
<li >
<a href="mock-使用mock功能.html">使用mock功能</a>
</li>
<!-- <li > -->
<li >
<a href="mock-使用测试集.html">使用测试集</a>
</li>
<!-- <li > -->
<li >
<a href="mock-成为组长.html">成为组长</a>
</li>
<!-- <li class="active" class="active" > -->
<li class="active" >
<a href="mock-权限列表.html">权限列表</a>
</li>
</ul>
</nav>
</div>
<div class="content-right markdown-body use-sidebar" role="main">
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="copyright">
&copy; 2016 <a href="http://ued.qunar.com/ymfe/">YMFE</a> Team. Build by <a href="http://ued.qunar.com/ydoc/">ydoc</a>.
</div>
</footer>
</div>
<div class="open-panel"></div>
<div class="mask"></div>
<script src="source/main.js"></script>
<script src="source/app.js"></script>
<script>
var lineHeight = 18;
var EXAMPLE_MAX_HEIGHT;
function fold() {
// 折叠code
$('.markdown-body pre').css({
"line-height": lineHeight + "px"
});
$('.markdown-body pre').map(function(i, item) {
var $item = $(item);
var foldnumber = $item.data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
if ($item.height() > EXAMPLE_MAX_HEIGHT) {
$item.css({
"padding-bottom": 30
});
$item.find('code').height(EXAMPLE_MAX_HEIGHT);
$item.append('<span class="extend">展开更多……</span>');
};
});
$('.ydoc-example').delegate('.extend', 'click', function() {
var $this = $(this);
$this.removeClass('extend').addClass('fold');
$this.html('折叠代码');
$this.parent().children('.js-code').height('auto');
$this.parent().height('auto');
});
$('.ydoc-example').delegate('.fold', 'click', function() {
var $this = $(this);
var foldnumber = $this.parent().data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
$this.removeClass('fold').addClass('extend');
$this.parent().height(EXAMPLE_MAX_HEIGHT); // pre
$this.parent().children('.js-code').height(EXAMPLE_MAX_HEIGHT); // code
$this.html("展开更多……");
});
}
$(document).ready(fold);
</script>
</body>
</html>

View File

@ -0,0 +1,215 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta name="format-detection" content="telephone=no,email=no" />
<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 Mock功能</title>
<link rel="stylesheet" href="source/main.css" />
</head>
<body>
<div class="ydoc">
<header class="ydoc-header">
<div class="ydoc-header-area">
<a href="http://ued.qunar.com/ymfe/" class="navbar-brand">YMFE</a>
<button class="ydocIcon navbar-toggle">&#xf020;</button>
<nav class="ydoc-nav">
<ul class="navbar-left">
<li class="">
<a href="index.html">首页</a>
</li>
<li class="">
<a href="usage.html">使用手册</a>
</li>
<li class="">
<a href="manage.html">管理学院</a>
</li>
<li class="active">
<a href="mock.html">Mock功能</a>
</li>
<li class="">
<a href="api.html"></a>
</li>
</ul>
</nav>
</div>
</header>
<!-- <header style="height:20px"></header> -->
<!-- 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">
<div class="ydoc-container-content ">
<div class="content-left staticsidenav" role="complementary">
<nav class="docs-sidebar hidden-print hidden-xs hidden-sm">
<ul class="nav docs-sidenav">
<!-- <li class="active" class="active" > -->
<li class="active" >
<a href="mock-认识 YApi.html">认识 YApi</a>
</li>
<ul class="nav docs-sidenav-extend" >
<li >
<a href="#登录与注册">登录与注册</a>
</li>
<li >
<a href="#首页">首页</a>
</li>
<li >
<a href="#项目页">项目页</a>
</li>
<li >
<a href="#个人信息">个人信息</a>
</li>
</ul>
<!-- <li > -->
<li >
<a href="mock-创建第一个API.html">创建第一个API</a>
</li>
<!-- <li > -->
<li >
<a href="mock-接口配置.html">接口配置</a>
</li>
<!-- <li > -->
<li >
<a href="mock-使用mock功能.html">使用mock功能</a>
</li>
<!-- <li > -->
<li >
<a href="mock-使用测试集.html">使用测试集</a>
</li>
<!-- <li > -->
<li >
<a href="mock-成为组长.html">成为组长</a>
</li>
<!-- <li > -->
<li >
<a href="mock-权限列表.html">权限列表</a>
</li>
</ul>
</nav>
</div>
<div class="content-right markdown-body use-sidebar" role="main">
<h2 class="subject" id="登录与注册">登录与注册 <a class="hashlink" href="#登录与注册">#</a></h2><h2 class="subject" id="首页">首页 <a class="hashlink" href="#首页">#</a></h2><h2 class="subject" id="项目页">项目页 <a class="hashlink" href="#项目页">#</a></h2><h2 class="subject" id="个人信息">个人信息 <a class="hashlink" href="#个人信息">#</a></h2>
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="copyright">
&copy; 2016 <a href="http://ued.qunar.com/ymfe/">YMFE</a> Team. Build by <a href="http://ued.qunar.com/ydoc/">ydoc</a>.
</div>
</footer>
</div>
<div class="open-panel"></div>
<div class="mask"></div>
<script src="source/main.js"></script>
<script src="source/app.js"></script>
<script>
var lineHeight = 18;
var EXAMPLE_MAX_HEIGHT;
function fold() {
// 折叠code
$('.markdown-body pre').css({
"line-height": lineHeight + "px"
});
$('.markdown-body pre').map(function(i, item) {
var $item = $(item);
var foldnumber = $item.data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
if ($item.height() > EXAMPLE_MAX_HEIGHT) {
$item.css({
"padding-bottom": 30
});
$item.find('code').height(EXAMPLE_MAX_HEIGHT);
$item.append('<span class="extend">展开更多……</span>');
};
});
$('.ydoc-example').delegate('.extend', 'click', function() {
var $this = $(this);
$this.removeClass('extend').addClass('fold');
$this.html('折叠代码');
$this.parent().children('.js-code').height('auto');
$this.parent().height('auto');
});
$('.ydoc-example').delegate('.fold', 'click', function() {
var $this = $(this);
var foldnumber = $this.parent().data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
$this.removeClass('fold').addClass('extend');
$this.parent().height(EXAMPLE_MAX_HEIGHT); // pre
$this.parent().children('.js-code').height(EXAMPLE_MAX_HEIGHT); // code
$this.html("展开更多……");
});
}
$(document).ready(fold);
</script>
</body>
</html>

View File

@ -31,7 +31,12 @@
<li class="">
<a href="start.html">快速开始</a>
<a href="usage.html">使用手册</a>
</li>
<li class="">
<a href="manage.html">管理学院</a>
</li>
<li class="active">
@ -75,173 +80,52 @@
<!-- <li > -->
<li >
<a href="#Mock介绍">Mock介绍</a>
<a href="mock-认识 YApi.html">认识 YApi</a>
</li>
<ul class="nav docs-sidenav-extend" >
<li >
<a href="#1_如何使用Mock?">1 如何使用Mock?</a>
</li>
<li >
<a href="#1.1_最简单最直接的方式">1.1 最简单最直接的方式</a>
</li>
<li >
<a href="#1.2_基于本地服务器反向代理">1.2 基于本地服务器反向代理</a>
</li>
<li >
<a href="#2.1_Mock语法规范">2.1 Mock语法规范</a>
</li>
<li >
<a href="#数据模板定义规范Data_Template_DefinitionDTD">数据模板定义规范Data Template DefinitionDTD</a>
</li>
<li >
<a href="#数据占位符定义规范Data_Placeholder_DefinitionDPD">数据占位符定义规范Data Placeholder DefinitionDPD</a>
</li>
</ul>
<!-- <li > -->
<li >
<a href="mock-创建第一个API.html">创建第一个API</a>
</li>
<!-- <li > -->
<li >
<a href="mock-接口配置.html">接口配置</a>
</li>
<!-- <li > -->
<li >
<a href="mock-使用mock功能.html">使用mock功能</a>
</li>
<!-- <li > -->
<li >
<a href="mock-使用测试集.html">使用测试集</a>
</li>
<!-- <li > -->
<li >
<a href="mock-成为组长.html">成为组长</a>
</li>
<!-- <li > -->
<li >
<a href="mock-权限列表.html">权限列表</a>
</li>
</ul>
</nav>
</div>
<div class="content-right markdown-body use-sidebar" role="main">
<h2 class="subject" id="Mock介绍">Mock介绍 <a class="hashlink" href="#Mock介绍">#</a></h2><p> <p style='text-indent:2em;line-height:1.8em'>yapi的Mock功能可以根据用户的输入接口信息如协议、URL、接口名、请求头、请求参数、mock规则(<a href="#mock">点击到Mock规则</a>生成Mock接口这些接口会自动生成模拟数据创建者可以自由构造需要的数据。而且与常见的Mock方式如将Mock写在代码里和JS拦截等相比yapi的Mock在使用场景和效率和复杂度上是相差甚远的正是由于yapi的Mock是一个第三方平台那么在团队开发时任何人都可以权限许可下创建、修改接口信息等操作这对于团队开发是很有好处的。</p>
<p> <strong>mock地址解析</strong>yapi平台网址+mock+<strong>您的项目id</strong>+<strong>接口实际请求path</strong></p>
<p>项目id可以在项目设置里查看到</p>
<p> </p>
<img src="./images/mock.jpg" style="width: 50%" /></p>
<h3 class="subject" id="1_如何使用Mock?">1 如何使用Mock? <a class="hashlink" href="#1_如何使用Mock?">#</a></h3><h3 class="subject" id="1.1_最简单最直接的方式">1.1 最简单最直接的方式 <a class="hashlink" href="#1.1_最简单最直接的方式">#</a></h3><p>在代码直接请求yapi提供的mock地址以jQuery为例</p>
<pre><code class="lang-javascript"><span class="token keyword">let</span> prefix <span class="token operator">=</span> <span class="token string">'http://yapi.local.qunar.com:3000/mock/2817'</span>
$<span class="token punctuation">.</span><span class="token function">post</span><span class="token punctuation">(</span>prefix<span class="token operator">+</span><span class="token string">'/baseapi/path'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>username<span class="token punctuation">:</span> <span class="token string">'xxx'</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span>res<span class="token punctuation">)</span><span class="token punctuation">{</span>
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>res<span class="token punctuation">)</span> <span class="token comment" spellcheck="true">//返回上图预览部分的数据</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span>
</code></pre>
<h3 class="subject" id="1.2_基于本地服务器反向代理">1.2 基于本地服务器反向代理 <a class="hashlink" href="#1.2_基于本地服务器反向代理">#</a></h3><p>优点:不用修改项目代码</p>
<h4 class="subject" id="1.2.1_基于nginx反向代理">1.2.1 基于nginx反向代理 <a class="hashlink" href="#1.2.1_基于nginx反向代理">#</a></h4><pre><code class="lang-nginx"><span class="token keyword">location</span> <span class="token operator">/</span>baseapi
<span class="token punctuation">{</span>
<span class="token keyword">proxy_pass</span> <span class="token keyword">http</span><span class="token punctuation">:</span><span class="token operator">/</span><span class="token operator">/</span>yapi<span class="token punctuation">.</span>local<span class="token punctuation">.</span>qunar<span class="token punctuation">.</span>com<span class="token punctuation">:</span><span class="token number">3000</span><span class="token operator">/</span>mock<span class="token operator">/</span><span class="token number">2817</span><span class="token operator">/</span>baseapi<span class="token punctuation">;</span> <span class="token comment" spellcheck="true">#baseapi后面没有"/"</span>
<span class="token punctuation">}</span>
</code></pre>
<h4 class="subject" id="1.2.2_基于ykit_Jerry代理">1.2.2 基于ykit Jerry代理 <a class="hashlink" href="#1.2.2_基于ykit_Jerry代理">#</a></h4><p>假设您本地服务器访问地址是: <a href="http://xxx.com">http://xxx.com</a></p>
<p><img src="./images/ykit.jpg" /></p>
<p><span id = "mock"></span></p>
<h3 class="subject" id="2.1_Mock语法规范">2.1 Mock语法规范 <a class="hashlink" href="#2.1_Mock语法规范">#</a></h3><blockquote>
<p>了解更多Mock详情<a href="https://github.com/nuysoft/Mock/wiki/Syntax-Specification">Mock.js 官方文档</a></p>
</blockquote>
<p>Mock.js 的语法规范包括两部分:</p>
<p><a href="#DTD">1. 数据模板定义规范Data Template DefinitionDTD</a></p>
<p><a href="#DPD">2. 数据占位符定义规范Data Placeholder DefinitionDPD</a></p>
<p><span id = "DTD"></span></p>
<h3 class="subject" id="数据模板定义规范Data_Template_DefinitionDTD">数据模板定义规范Data Template DefinitionDTD <a class="hashlink" href="#数据模板定义规范Data_Template_DefinitionDTD">#</a></h3><p>数据模板中的每个属性由 3 部分构成:属性名、生成规则、属性值:</p>
<pre><code>// 属性名 name (与生成规则之间用 "|<span class="token string">" 隔开)
// 生成规则 rule生成规则有7种详见下面的生成规则
// 属性值 value可以含有 "</span>@占位符" 同时也指定了最终值的初始值和类型)
'name|rule'<span class="token operator">:</span> value
生成规则:
'name|min-max'<span class="token operator">:</span> value
'name|count'<span class="token operator">:</span> value
'name|min-max.dmin-dmax'<span class="token operator">:</span> value
'name|min-max.dcount'<span class="token operator">:</span> value
'name|count.dmin-dmax'<span class="token operator">:</span> value
'name|count.dcount'<span class="token operator">:</span> value
'name|+step'<span class="token operator">:</span> value
</code></pre><p>下面提供了6种生成规则以及示例包括 String、Number、Boolean、Object、Array</p>
<h4 class="subject" id="1._属性值是字符串_String">1. 属性值是字符串 String <a class="hashlink" href="#1._属性值是字符串_String">#</a></h4><pre><code><span class="token number">1</span>. 'name|min-max'<span class="token operator">:</span> string
通过重复 string 生成一个字符串,重复次数大于等于 min小于等于 max。
<span class="token number">2</span>. 'name|count'<span class="token operator">:</span> string
通过重复 string 生成一个字符串,重复次数等于 count。
</code></pre><h4 class="subject" id="2._属性值是数字_Number">2. 属性值是数字 Number <a class="hashlink" href="#2._属性值是数字_Number">#</a></h4><pre><code><span class="token number">1</span>. 'name|+<span class="token number">1</span>'<span class="token operator">:</span> number
属性值自动加 <span class="token number">1</span>,初始值为 number。
<span class="token number">2</span>. 'name|min-max'<span class="token operator">:</span> number
生成一个大于等于 min、小于等于 max 的整数,属性值 number 只是用来确定类型。
<span class="token number">3</span>. 'name|min-max.dmin-dmax'<span class="token operator">:</span> number
生成一个浮点数,整数部分大于等于 min、小于等于 max小数部分保留 dmin 到 dmax 位。
例如:
Mock.mock(<span class="token punctuation">{</span>
'number1|<span class="token number">1</span>-<span class="token number">100.1</span>-<span class="token number">10</span>'<span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
'number2|<span class="token number">123.1</span>-<span class="token number">10</span>'<span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
'number3|<span class="token number">123.3</span>'<span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
'number4|<span class="token number">123.10</span>'<span class="token operator">:</span> <span class="token number">1.123</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span>
// =>
<span class="token punctuation">{</span>
<span class="token property">"number1"</span><span class="token operator">:</span> <span class="token number">12.92</span><span class="token punctuation">,</span>
<span class="token property">"number2"</span><span class="token operator">:</span> <span class="token number">123.51</span><span class="token punctuation">,</span>
<span class="token property">"number3"</span><span class="token operator">:</span> <span class="token number">123.777</span><span class="token punctuation">,</span>
<span class="token property">"number4"</span><span class="token operator">:</span> <span class="token number">123.1231091814</span>
<span class="token punctuation">}</span>
</code></pre><h4 class="subject" id="3._属性值是布尔型_Boolean">3. 属性值是布尔型 Boolean <a class="hashlink" href="#3._属性值是布尔型_Boolean">#</a></h4><pre><code><span class="token number">1</span>. 'name|<span class="token number">1</span>'<span class="token operator">:</span> boolean
随机生成一个布尔值,值为 <span class="token boolean">true</span> 的概率是 <span class="token number">1</span>/<span class="token number">2</span>,值为 <span class="token boolean">false</span> 的概率同样是 <span class="token number">1</span>/<span class="token number">2</span>
<span class="token number">2</span>. 'name|min-max'<span class="token operator">:</span> value
随机生成一个布尔值,值为 value 的概率是 min / (min + max<span class="token punctuation">)</span>,值为 !value 的概率是 max / (min + max<span class="token punctuation">)</span>
</code></pre><h4 class="subject" id="4._属性值是对象_Object">4. 属性值是对象 Object <a class="hashlink" href="#4._属性值是对象_Object">#</a></h4><pre><code><span class="token number">1</span>. 'name|count'<span class="token operator">:</span> object
从属性值 object 中随机选取 count 个属性。
<span class="token number">2</span>. 'name|min-max'<span class="token operator">:</span> object
从属性值 object 中随机选取 min 到 max 个属性。
</code></pre><h4 class="subject" id="5._属性值是数组_Array">5. 属性值是数组 Array <a class="hashlink" href="#5._属性值是数组_Array">#</a></h4><pre><code><span class="token number">1</span>. 'name|<span class="token number">1</span>'<span class="token operator">:</span> array
从属性值 array 中随机选取 <span class="token number">1</span> 个元素,作为最终值。
<span class="token number">2</span>. 'name|+<span class="token number">1</span>'<span class="token operator">:</span> array
从属性值 array 中顺序选取 <span class="token number">1</span> 个元素,作为最终值。
<span class="token number">3</span>. 'name|min-max'<span class="token operator">:</span> array
通过重复属性值 array 生成一个新数组,重复次数大于等于 min小于等于 max。
<span class="token number">4</span>. 'name|count'<span class="token operator">:</span> array
通过重复属性值 array 生成一个新数组,重复次数为 count。
</code></pre><p><span id = "DPD"></span></p>
<h3 class="subject" id="数据占位符定义规范Data_Placeholder_DefinitionDPD">数据占位符定义规范Data Placeholder DefinitionDPD <a class="hashlink" href="#数据占位符定义规范Data_Placeholder_DefinitionDPD">#</a></h3><pre><code>占位符 只是在属性值字符串中占个位置,并不出现在最终的属性值中。
占位符 的格式为:
@占位符
说明:
<span class="token number">1</span>. 用 @ 来标识其后的字符串是 占位符在YApi提供的Mock输入框在输入“@”后会自动提示占位符。
例如:
name<span class="token operator">:</span> <span class="token punctuation">{</span>
first<span class="token operator">:</span> '@FIRST'<span class="token punctuation">,</span>
middle<span class="token operator">:</span> '@FIRST'<span class="token punctuation">,</span>
last<span class="token operator">:</span> '@LAST'<span class="token punctuation">,</span>
full<span class="token operator">:</span> '@first @middle @last'
<span class="token punctuation">}</span>
// 上面的示例可以得到如下结果:
<span class="token property">"name"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token property">"first"</span><span class="token operator">:</span> <span class="token string">"Charles"</span><span class="token punctuation">,</span>
<span class="token property">"middle"</span><span class="token operator">:</span> <span class="token string">"Brenda"</span><span class="token punctuation">,</span>
<span class="token property">"last"</span><span class="token operator">:</span> <span class="token string">"Lopez"</span><span class="token punctuation">,</span>
<span class="token property">"full"</span><span class="token operator">:</span> <span class="token string">"Charles Brenda Lopez"</span>
<span class="token punctuation">}</span>
</code></pre>
<h2 class="subject" id="登录与注册">登录与注册 <a class="hashlink" href="#登录与注册">#</a></h2><h2 class="subject" id="首页">首页 <a class="hashlink" href="#首页">#</a></h2><h2 class="subject" id="项目页">项目页 <a class="hashlink" href="#项目页">#</a></h2><h2 class="subject" id="个人信息">个人信息 <a class="hashlink" href="#个人信息">#</a></h2>
</div>
</div>

View File

@ -0,0 +1,211 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta name="format-detection" content="telephone=no,email=no" />
<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>
<link rel="stylesheet" href="source/main.css" />
</head>
<body>
<div class="ydoc">
<header class="ydoc-header">
<div class="ydoc-header-area">
<a href="http://ued.qunar.com/ymfe/" class="navbar-brand">YMFE</a>
<button class="ydocIcon navbar-toggle">&#xf020;</button>
<nav class="ydoc-nav">
<ul class="navbar-left">
<li class="">
<a href="index.html">首页</a>
</li>
<li class="active">
<a href="usage.html">使用手册</a>
</li>
<li class="">
<a href="manage.html">管理学院</a>
</li>
<li class="">
<a href="mock.html">Mock功能</a>
</li>
<li class="">
<a href="api.html"></a>
</li>
</ul>
</nav>
</div>
</header>
<!-- <header style="height:20px"></header> -->
<!-- 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">
<div class="ydoc-container-content ">
<div class="content-left staticsidenav" role="complementary">
<nav class="docs-sidebar hidden-print hidden-xs hidden-sm">
<ul class="nav docs-sidenav">
<!-- <li > -->
<li >
<a href="usage-认识 YApi.html">认识 YApi</a>
</li>
<!-- <li > -->
<li >
<a href="usage-创建第一个API.html">创建第一个API</a>
</li>
<!-- <li > -->
<li >
<a href="usage-接口配置.html">接口配置</a>
</li>
<!-- <li class="active" class="active" > -->
<li class="active" >
<a href="usage-使用mock功能.html">使用mock功能</a>
</li>
<ul class="nav docs-sidenav-extend" >
<li >
<a href="#介绍">介绍</a>
</li>
<li >
<a href="#使用说明">使用说明</a>
</li>
<li >
<a href="#模板语法">模板语法</a>
</li>
</ul>
<!-- <li > -->
<li >
<a href="usage-使用测试集.html">使用测试集</a>
</li>
<!-- <li > -->
<li >
<a href="usage-成为组长.html">成为组长</a>
</li>
<!-- <li > -->
<li >
<a href="usage-权限列表.html">权限列表</a>
</li>
</ul>
</nav>
</div>
<div class="content-right markdown-body use-sidebar" role="main">
<h2 class="subject" id="介绍">介绍 <a class="hashlink" href="#介绍">#</a></h2><h2 class="subject" id="使用说明">使用说明 <a class="hashlink" href="#使用说明">#</a></h2><h2 class="subject" id="模板语法">模板语法 <a class="hashlink" href="#模板语法">#</a></h2>
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="copyright">
&copy; 2016 <a href="http://ued.qunar.com/ymfe/">YMFE</a> Team. Build by <a href="http://ued.qunar.com/ydoc/">ydoc</a>.
</div>
</footer>
</div>
<div class="open-panel"></div>
<div class="mask"></div>
<script src="source/main.js"></script>
<script src="source/app.js"></script>
<script>
var lineHeight = 18;
var EXAMPLE_MAX_HEIGHT;
function fold() {
// 折叠code
$('.markdown-body pre').css({
"line-height": lineHeight + "px"
});
$('.markdown-body pre').map(function(i, item) {
var $item = $(item);
var foldnumber = $item.data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
if ($item.height() > EXAMPLE_MAX_HEIGHT) {
$item.css({
"padding-bottom": 30
});
$item.find('code').height(EXAMPLE_MAX_HEIGHT);
$item.append('<span class="extend">展开更多……</span>');
};
});
$('.ydoc-example').delegate('.extend', 'click', function() {
var $this = $(this);
$this.removeClass('extend').addClass('fold');
$this.html('折叠代码');
$this.parent().children('.js-code').height('auto');
$this.parent().height('auto');
});
$('.ydoc-example').delegate('.fold', 'click', function() {
var $this = $(this);
var foldnumber = $this.parent().data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
$this.removeClass('fold').addClass('extend');
$this.parent().height(EXAMPLE_MAX_HEIGHT); // pre
$this.parent().children('.js-code').height(EXAMPLE_MAX_HEIGHT); // code
$this.html("展开更多……");
});
}
$(document).ready(fold);
</script>
</body>
</html>

View File

@ -0,0 +1,207 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta name="format-detection" content="telephone=no,email=no" />
<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>
<link rel="stylesheet" href="source/main.css" />
</head>
<body>
<div class="ydoc">
<header class="ydoc-header">
<div class="ydoc-header-area">
<a href="http://ued.qunar.com/ymfe/" class="navbar-brand">YMFE</a>
<button class="ydocIcon navbar-toggle">&#xf020;</button>
<nav class="ydoc-nav">
<ul class="navbar-left">
<li class="">
<a href="index.html">首页</a>
</li>
<li class="active">
<a href="usage.html">使用手册</a>
</li>
<li class="">
<a href="manage.html">管理学院</a>
</li>
<li class="">
<a href="mock.html">Mock功能</a>
</li>
<li class="">
<a href="api.html"></a>
</li>
</ul>
</nav>
</div>
</header>
<!-- <header style="height:20px"></header> -->
<!-- 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">
<div class="ydoc-container-content ">
<div class="content-left staticsidenav" role="complementary">
<nav class="docs-sidebar hidden-print hidden-xs hidden-sm">
<ul class="nav docs-sidenav">
<!-- <li > -->
<li >
<a href="usage-认识 YApi.html">认识 YApi</a>
</li>
<!-- <li > -->
<li >
<a href="usage-创建第一个API.html">创建第一个API</a>
</li>
<!-- <li > -->
<li >
<a href="usage-接口配置.html">接口配置</a>
</li>
<!-- <li > -->
<li >
<a href="usage-使用mock功能.html">使用mock功能</a>
</li>
<!-- <li class="active" class="active" > -->
<li class="active" >
<a href="usage-使用测试集.html">使用测试集</a>
</li>
<ul class="nav docs-sidenav-extend" >
<li >
<a href="#介绍">介绍</a>
</li>
<li >
<a href="#使用说明">使用说明</a>
</li>
</ul>
<!-- <li > -->
<li >
<a href="usage-成为组长.html">成为组长</a>
</li>
<!-- <li > -->
<li >
<a href="usage-权限列表.html">权限列表</a>
</li>
</ul>
</nav>
</div>
<div class="content-right markdown-body use-sidebar" role="main">
<h2 class="subject" id="介绍">介绍 <a class="hashlink" href="#介绍">#</a></h2><h2 class="subject" id="使用说明">使用说明 <a class="hashlink" href="#使用说明">#</a></h2>
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="copyright">
&copy; 2016 <a href="http://ued.qunar.com/ymfe/">YMFE</a> Team. Build by <a href="http://ued.qunar.com/ydoc/">ydoc</a>.
</div>
</footer>
</div>
<div class="open-panel"></div>
<div class="mask"></div>
<script src="source/main.js"></script>
<script src="source/app.js"></script>
<script>
var lineHeight = 18;
var EXAMPLE_MAX_HEIGHT;
function fold() {
// 折叠code
$('.markdown-body pre').css({
"line-height": lineHeight + "px"
});
$('.markdown-body pre').map(function(i, item) {
var $item = $(item);
var foldnumber = $item.data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
if ($item.height() > EXAMPLE_MAX_HEIGHT) {
$item.css({
"padding-bottom": 30
});
$item.find('code').height(EXAMPLE_MAX_HEIGHT);
$item.append('<span class="extend">展开更多……</span>');
};
});
$('.ydoc-example').delegate('.extend', 'click', function() {
var $this = $(this);
$this.removeClass('extend').addClass('fold');
$this.html('折叠代码');
$this.parent().children('.js-code').height('auto');
$this.parent().height('auto');
});
$('.ydoc-example').delegate('.fold', 'click', function() {
var $this = $(this);
var foldnumber = $this.parent().data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
$this.removeClass('fold').addClass('extend');
$this.parent().height(EXAMPLE_MAX_HEIGHT); // pre
$this.parent().children('.js-code').height(EXAMPLE_MAX_HEIGHT); // code
$this.html("展开更多……");
});
}
$(document).ready(fold);
</script>
</body>
</html>

View File

@ -0,0 +1,224 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta name="format-detection" content="telephone=no,email=no" />
<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>
<link rel="stylesheet" href="source/main.css" />
</head>
<body>
<div class="ydoc">
<header class="ydoc-header">
<div class="ydoc-header-area">
<a href="http://ued.qunar.com/ymfe/" class="navbar-brand">YMFE</a>
<button class="ydocIcon navbar-toggle">&#xf020;</button>
<nav class="ydoc-nav">
<ul class="navbar-left">
<li class="">
<a href="index.html">首页</a>
</li>
<li class="active">
<a href="usage.html">使用手册</a>
</li>
<li class="">
<a href="manage.html">管理学院</a>
</li>
<li class="">
<a href="mock.html">Mock功能</a>
</li>
<li class="">
<a href="api.html"></a>
</li>
</ul>
</nav>
</div>
</header>
<!-- <header style="height:20px"></header> -->
<!-- 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">
<div class="ydoc-container-content ">
<div class="content-left staticsidenav" role="complementary">
<nav class="docs-sidebar hidden-print hidden-xs hidden-sm">
<ul class="nav docs-sidenav">
<!-- <li > -->
<li >
<a href="usage-认识 YApi.html">认识 YApi</a>
</li>
<!-- <li class="active" class="active" > -->
<li class="active" >
<a href="usage-创建第一个API.html">创建第一个API</a>
</li>
<ul class="nav docs-sidenav-extend" >
<li >
<a href="#起步">起步</a>
</li>
</ul>
<!-- <li > -->
<li >
<a href="usage-接口配置.html">接口配置</a>
</li>
<!-- <li > -->
<li >
<a href="usage-使用mock功能.html">使用mock功能</a>
</li>
<!-- <li > -->
<li >
<a href="usage-使用测试集.html">使用测试集</a>
</li>
<!-- <li > -->
<li >
<a href="usage-成为组长.html">成为组长</a>
</li>
<!-- <li > -->
<li >
<a href="usage-权限列表.html">权限列表</a>
</li>
</ul>
</nav>
</div>
<div class="content-right markdown-body use-sidebar" role="main">
<h2 class="subject" id="起步">起步 <a class="hashlink" href="#起步">#</a></h2><h3 class="subject" id="创建API">创建API <a class="hashlink" href="#创建API">#</a></h3><p>注册新用户或使用 QSSO 登录。</p>
<p>新用户进入 YApi 时没有任何权限,只能浏览公开项目,想要创建 API 应联系 <code>组长</code> 将你添加到某分组或某项目中。
登录之后进到项目首页,左边侧边栏显示的即分组列表。</p>
<p><img src="./images/project_group.png" width = "200" style="margin-left:170px;display:block;" alt="图片名称" align=center /></p>
<h4 class="subject" id="项目列表">项目列表 <a class="hashlink" href="#项目列表">#</a></h4><p>选中不同的分组,右边会显示该分组下的项目列表。</p>
<p><img src="./images/project_list.png" width = "800" style="margin:0px auto;display:block;" alt="图片名称" align=center /></p>
<h3 class="subject" id="添加项目">添加项目 <a class="hashlink" href="#添加项目">#</a></h3><ul>
<li><p>点击右上角的“+“号进入添加项目页面
<img src="./images/project_add.png" width = "100%" style="margin:0px auto;display:block;" alt="图片名称" align=center /></p>
</li><li><p>添加项目页面
<img src="./images/project_add_view.png" width = "100%" style="margin:0px auto;display:block;" alt="图片名称" align=center />
添加完成后进去项目详情页面</p>
</li></ul>
<h3 class="subject" id="项目详情页面">项目详情页面 <a class="hashlink" href="#项目详情页面">#</a></h3><h4 class="subject" id="添加接口分类">添加接口分类 <a class="hashlink" href="#添加接口分类">#</a></h4><p><img src="./images/interface_add_cat.png" width = "800" style="margin:0px auto;display:block;" alt="图片名称" align=center /></p>
<p>添加完成后可以在左侧列表看到新添加的接口分类</p>
<h4 class="subject" id="4.2_添加接口">4.2 添加接口 <a class="hashlink" href="#4.2_添加接口">#</a></h4><p>鼠标移动到接口分类的菜单icon点击添加接口</p>
<p><img src="./images/interface_add.png" width="400" style="margin:0px auto;display:block;" alt="图片名称" align=center /></p>
<h4 class="subject" id="4.3_接口编辑">4.3 接口编辑 <a class="hashlink" href="#4.3_接口编辑">#</a></h4><p>添加完接口点击新添加的接口,跳转到接口预览页面,可看到刚才填写的信息。接口的详细信息点击编辑功能进行添加</p>
<h4 class="subject" id="4.4_测试接口">4.4 测试接口 <a class="hashlink" href="#4.4_测试接口">#</a></h4><p>点击运行tab,可进入到接口测试页面,首先安装chrome crossRequest扩展才可正常使用此功能
<img src="./images/interface_run.png" width="800" style="margin:0px auto;display:block;" alt="图片名称" align=center />
点击保存按钮可把当前测试保存到测试集,方便下次调试</p>
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="copyright">
&copy; 2016 <a href="http://ued.qunar.com/ymfe/">YMFE</a> Team. Build by <a href="http://ued.qunar.com/ydoc/">ydoc</a>.
</div>
</footer>
</div>
<div class="open-panel"></div>
<div class="mask"></div>
<script src="source/main.js"></script>
<script src="source/app.js"></script>
<script>
var lineHeight = 18;
var EXAMPLE_MAX_HEIGHT;
function fold() {
// 折叠code
$('.markdown-body pre').css({
"line-height": lineHeight + "px"
});
$('.markdown-body pre').map(function(i, item) {
var $item = $(item);
var foldnumber = $item.data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
if ($item.height() > EXAMPLE_MAX_HEIGHT) {
$item.css({
"padding-bottom": 30
});
$item.find('code').height(EXAMPLE_MAX_HEIGHT);
$item.append('<span class="extend">展开更多……</span>');
};
});
$('.ydoc-example').delegate('.extend', 'click', function() {
var $this = $(this);
$this.removeClass('extend').addClass('fold');
$this.html('折叠代码');
$this.parent().children('.js-code').height('auto');
$this.parent().height('auto');
});
$('.ydoc-example').delegate('.fold', 'click', function() {
var $this = $(this);
var foldnumber = $this.parent().data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
$this.removeClass('fold').addClass('extend');
$this.parent().height(EXAMPLE_MAX_HEIGHT); // pre
$this.parent().children('.js-code').height(EXAMPLE_MAX_HEIGHT); // code
$this.html("展开更多……");
});
}
$(document).ready(fold);
</script>
</body>
</html>

View File

@ -0,0 +1,207 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta name="format-detection" content="telephone=no,email=no" />
<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>
<link rel="stylesheet" href="source/main.css" />
</head>
<body>
<div class="ydoc">
<header class="ydoc-header">
<div class="ydoc-header-area">
<a href="http://ued.qunar.com/ymfe/" class="navbar-brand">YMFE</a>
<button class="ydocIcon navbar-toggle">&#xf020;</button>
<nav class="ydoc-nav">
<ul class="navbar-left">
<li class="">
<a href="index.html">首页</a>
</li>
<li class="active">
<a href="usage.html">使用手册</a>
</li>
<li class="">
<a href="manage.html">管理学院</a>
</li>
<li class="">
<a href="mock.html">Mock功能</a>
</li>
<li class="">
<a href="api.html"></a>
</li>
</ul>
</nav>
</div>
</header>
<!-- <header style="height:20px"></header> -->
<!-- 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">
<div class="ydoc-container-content ">
<div class="content-left staticsidenav" role="complementary">
<nav class="docs-sidebar hidden-print hidden-xs hidden-sm">
<ul class="nav docs-sidenav">
<!-- <li > -->
<li >
<a href="usage-认识 YApi.html">认识 YApi</a>
</li>
<!-- <li > -->
<li >
<a href="usage-创建第一个API.html">创建第一个API</a>
</li>
<!-- <li > -->
<li >
<a href="usage-接口配置.html">接口配置</a>
</li>
<!-- <li > -->
<li >
<a href="usage-使用mock功能.html">使用mock功能</a>
</li>
<!-- <li > -->
<li >
<a href="usage-使用测试集.html">使用测试集</a>
</li>
<!-- <li class="active" class="active" > -->
<li class="active" >
<a href="usage-成为组长.html">成为组长</a>
</li>
<ul class="nav docs-sidenav-extend" >
<li >
<a href="#什么是组长">什么是组长</a>
</li>
<li >
<a href="#组长职责">组长职责</a>
</li>
</ul>
<!-- <li > -->
<li >
<a href="usage-权限列表.html">权限列表</a>
</li>
</ul>
</nav>
</div>
<div class="content-right markdown-body use-sidebar" role="main">
<h2 class="subject" id="什么是组长">什么是组长 <a class="hashlink" href="#什么是组长">#</a></h2><h2 class="subject" id="组长职责">组长职责 <a class="hashlink" href="#组长职责">#</a></h2>
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="copyright">
&copy; 2016 <a href="http://ued.qunar.com/ymfe/">YMFE</a> Team. Build by <a href="http://ued.qunar.com/ydoc/">ydoc</a>.
</div>
</footer>
</div>
<div class="open-panel"></div>
<div class="mask"></div>
<script src="source/main.js"></script>
<script src="source/app.js"></script>
<script>
var lineHeight = 18;
var EXAMPLE_MAX_HEIGHT;
function fold() {
// 折叠code
$('.markdown-body pre').css({
"line-height": lineHeight + "px"
});
$('.markdown-body pre').map(function(i, item) {
var $item = $(item);
var foldnumber = $item.data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
if ($item.height() > EXAMPLE_MAX_HEIGHT) {
$item.css({
"padding-bottom": 30
});
$item.find('code').height(EXAMPLE_MAX_HEIGHT);
$item.append('<span class="extend">展开更多……</span>');
};
});
$('.ydoc-example').delegate('.extend', 'click', function() {
var $this = $(this);
$this.removeClass('extend').addClass('fold');
$this.html('折叠代码');
$this.parent().children('.js-code').height('auto');
$this.parent().height('auto');
});
$('.ydoc-example').delegate('.fold', 'click', function() {
var $this = $(this);
var foldnumber = $this.parent().data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
$this.removeClass('fold').addClass('extend');
$this.parent().height(EXAMPLE_MAX_HEIGHT); // pre
$this.parent().children('.js-code').height(EXAMPLE_MAX_HEIGHT); // code
$this.html("展开更多……");
});
}
$(document).ready(fold);
</script>
</body>
</html>

View File

@ -0,0 +1,207 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta name="format-detection" content="telephone=no,email=no" />
<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>
<link rel="stylesheet" href="source/main.css" />
</head>
<body>
<div class="ydoc">
<header class="ydoc-header">
<div class="ydoc-header-area">
<a href="http://ued.qunar.com/ymfe/" class="navbar-brand">YMFE</a>
<button class="ydocIcon navbar-toggle">&#xf020;</button>
<nav class="ydoc-nav">
<ul class="navbar-left">
<li class="">
<a href="index.html">首页</a>
</li>
<li class="active">
<a href="usage.html">使用手册</a>
</li>
<li class="">
<a href="manage.html">管理学院</a>
</li>
<li class="">
<a href="mock.html">Mock功能</a>
</li>
<li class="">
<a href="api.html"></a>
</li>
</ul>
</nav>
</div>
</header>
<!-- <header style="height:20px"></header> -->
<!-- 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">
<div class="ydoc-container-content ">
<div class="content-left staticsidenav" role="complementary">
<nav class="docs-sidebar hidden-print hidden-xs hidden-sm">
<ul class="nav docs-sidenav">
<!-- <li > -->
<li >
<a href="usage-认识 YApi.html">认识 YApi</a>
</li>
<!-- <li > -->
<li >
<a href="usage-创建第一个API.html">创建第一个API</a>
</li>
<!-- <li class="active" class="active" > -->
<li class="active" >
<a href="usage-接口配置.html">接口配置</a>
</li>
<ul class="nav docs-sidenav-extend" >
<li >
<a href="#介绍">介绍</a>
</li>
<li >
<a href="#配置说明">配置说明</a>
</li>
</ul>
<!-- <li > -->
<li >
<a href="usage-使用mock功能.html">使用mock功能</a>
</li>
<!-- <li > -->
<li >
<a href="usage-使用测试集.html">使用测试集</a>
</li>
<!-- <li > -->
<li >
<a href="usage-成为组长.html">成为组长</a>
</li>
<!-- <li > -->
<li >
<a href="usage-权限列表.html">权限列表</a>
</li>
</ul>
</nav>
</div>
<div class="content-right markdown-body use-sidebar" role="main">
<h2 class="subject" id="介绍">介绍 <a class="hashlink" href="#介绍">#</a></h2><h2 class="subject" id="配置说明">配置说明 <a class="hashlink" href="#配置说明">#</a></h2>
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="copyright">
&copy; 2016 <a href="http://ued.qunar.com/ymfe/">YMFE</a> Team. Build by <a href="http://ued.qunar.com/ydoc/">ydoc</a>.
</div>
</footer>
</div>
<div class="open-panel"></div>
<div class="mask"></div>
<script src="source/main.js"></script>
<script src="source/app.js"></script>
<script>
var lineHeight = 18;
var EXAMPLE_MAX_HEIGHT;
function fold() {
// 折叠code
$('.markdown-body pre').css({
"line-height": lineHeight + "px"
});
$('.markdown-body pre').map(function(i, item) {
var $item = $(item);
var foldnumber = $item.data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
if ($item.height() > EXAMPLE_MAX_HEIGHT) {
$item.css({
"padding-bottom": 30
});
$item.find('code').height(EXAMPLE_MAX_HEIGHT);
$item.append('<span class="extend">展开更多……</span>');
};
});
$('.ydoc-example').delegate('.extend', 'click', function() {
var $this = $(this);
$this.removeClass('extend').addClass('fold');
$this.html('折叠代码');
$this.parent().children('.js-code').height('auto');
$this.parent().height('auto');
});
$('.ydoc-example').delegate('.fold', 'click', function() {
var $this = $(this);
var foldnumber = $this.parent().data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
$this.removeClass('fold').addClass('extend');
$this.parent().height(EXAMPLE_MAX_HEIGHT); // pre
$this.parent().children('.js-code').height(EXAMPLE_MAX_HEIGHT); // code
$this.html("展开更多……");
});
}
$(document).ready(fold);
</script>
</body>
</html>

View File

@ -0,0 +1,195 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta name="format-detection" content="telephone=no,email=no" />
<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>
<link rel="stylesheet" href="source/main.css" />
</head>
<body>
<div class="ydoc">
<header class="ydoc-header">
<div class="ydoc-header-area">
<a href="http://ued.qunar.com/ymfe/" class="navbar-brand">YMFE</a>
<button class="ydocIcon navbar-toggle">&#xf020;</button>
<nav class="ydoc-nav">
<ul class="navbar-left">
<li class="">
<a href="index.html">首页</a>
</li>
<li class="active">
<a href="usage.html">使用手册</a>
</li>
<li class="">
<a href="manage.html">管理学院</a>
</li>
<li class="">
<a href="mock.html">Mock功能</a>
</li>
<li class="">
<a href="api.html"></a>
</li>
</ul>
</nav>
</div>
</header>
<!-- <header style="height:20px"></header> -->
<!-- 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">
<div class="ydoc-container-content ">
<div class="content-left staticsidenav" role="complementary">
<nav class="docs-sidebar hidden-print hidden-xs hidden-sm">
<ul class="nav docs-sidenav">
<!-- <li > -->
<li >
<a href="usage-认识 YApi.html">认识 YApi</a>
</li>
<!-- <li > -->
<li >
<a href="usage-创建第一个API.html">创建第一个API</a>
</li>
<!-- <li > -->
<li >
<a href="usage-接口配置.html">接口配置</a>
</li>
<!-- <li > -->
<li >
<a href="usage-使用mock功能.html">使用mock功能</a>
</li>
<!-- <li > -->
<li >
<a href="usage-使用测试集.html">使用测试集</a>
</li>
<!-- <li > -->
<li >
<a href="usage-成为组长.html">成为组长</a>
</li>
<!-- <li class="active" class="active" > -->
<li class="active" >
<a href="usage-权限列表.html">权限列表</a>
</li>
</ul>
</nav>
</div>
<div class="content-right markdown-body use-sidebar" role="main">
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="copyright">
&copy; 2016 <a href="http://ued.qunar.com/ymfe/">YMFE</a> Team. Build by <a href="http://ued.qunar.com/ydoc/">ydoc</a>.
</div>
</footer>
</div>
<div class="open-panel"></div>
<div class="mask"></div>
<script src="source/main.js"></script>
<script src="source/app.js"></script>
<script>
var lineHeight = 18;
var EXAMPLE_MAX_HEIGHT;
function fold() {
// 折叠code
$('.markdown-body pre').css({
"line-height": lineHeight + "px"
});
$('.markdown-body pre').map(function(i, item) {
var $item = $(item);
var foldnumber = $item.data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
if ($item.height() > EXAMPLE_MAX_HEIGHT) {
$item.css({
"padding-bottom": 30
});
$item.find('code').height(EXAMPLE_MAX_HEIGHT);
$item.append('<span class="extend">展开更多……</span>');
};
});
$('.ydoc-example').delegate('.extend', 'click', function() {
var $this = $(this);
$this.removeClass('extend').addClass('fold');
$this.html('折叠代码');
$this.parent().children('.js-code').height('auto');
$this.parent().height('auto');
});
$('.ydoc-example').delegate('.fold', 'click', function() {
var $this = $(this);
var foldnumber = $this.parent().data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
$this.removeClass('fold').addClass('extend');
$this.parent().height(EXAMPLE_MAX_HEIGHT); // pre
$this.parent().children('.js-code').height(EXAMPLE_MAX_HEIGHT); // code
$this.html("展开更多……");
});
}
$(document).ready(fold);
</script>
</body>
</html>

View File

@ -0,0 +1,215 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta name="format-detection" content="telephone=no,email=no" />
<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>
<link rel="stylesheet" href="source/main.css" />
</head>
<body>
<div class="ydoc">
<header class="ydoc-header">
<div class="ydoc-header-area">
<a href="http://ued.qunar.com/ymfe/" class="navbar-brand">YMFE</a>
<button class="ydocIcon navbar-toggle">&#xf020;</button>
<nav class="ydoc-nav">
<ul class="navbar-left">
<li class="">
<a href="index.html">首页</a>
</li>
<li class="active">
<a href="usage.html">使用手册</a>
</li>
<li class="">
<a href="manage.html">管理学院</a>
</li>
<li class="">
<a href="mock.html">Mock功能</a>
</li>
<li class="">
<a href="api.html"></a>
</li>
</ul>
</nav>
</div>
</header>
<!-- <header style="height:20px"></header> -->
<!-- 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">
<div class="ydoc-container-content ">
<div class="content-left staticsidenav" role="complementary">
<nav class="docs-sidebar hidden-print hidden-xs hidden-sm">
<ul class="nav docs-sidenav">
<!-- <li class="active" class="active" > -->
<li class="active" >
<a href="usage-认识 YApi.html">认识 YApi</a>
</li>
<ul class="nav docs-sidenav-extend" >
<li >
<a href="#登录与注册">登录与注册</a>
</li>
<li >
<a href="#首页">首页</a>
</li>
<li >
<a href="#项目页">项目页</a>
</li>
<li >
<a href="#个人信息">个人信息</a>
</li>
</ul>
<!-- <li > -->
<li >
<a href="usage-创建第一个API.html">创建第一个API</a>
</li>
<!-- <li > -->
<li >
<a href="usage-接口配置.html">接口配置</a>
</li>
<!-- <li > -->
<li >
<a href="usage-使用mock功能.html">使用mock功能</a>
</li>
<!-- <li > -->
<li >
<a href="usage-使用测试集.html">使用测试集</a>
</li>
<!-- <li > -->
<li >
<a href="usage-成为组长.html">成为组长</a>
</li>
<!-- <li > -->
<li >
<a href="usage-权限列表.html">权限列表</a>
</li>
</ul>
</nav>
</div>
<div class="content-right markdown-body use-sidebar" role="main">
<h2 class="subject" id="登录与注册">登录与注册 <a class="hashlink" href="#登录与注册">#</a></h2><h2 class="subject" id="首页">首页 <a class="hashlink" href="#首页">#</a></h2><h2 class="subject" id="项目页">项目页 <a class="hashlink" href="#项目页">#</a></h2><h2 class="subject" id="个人信息">个人信息 <a class="hashlink" href="#个人信息">#</a></h2>
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="copyright">
&copy; 2016 <a href="http://ued.qunar.com/ymfe/">YMFE</a> Team. Build by <a href="http://ued.qunar.com/ydoc/">ydoc</a>.
</div>
</footer>
</div>
<div class="open-panel"></div>
<div class="mask"></div>
<script src="source/main.js"></script>
<script src="source/app.js"></script>
<script>
var lineHeight = 18;
var EXAMPLE_MAX_HEIGHT;
function fold() {
// 折叠code
$('.markdown-body pre').css({
"line-height": lineHeight + "px"
});
$('.markdown-body pre').map(function(i, item) {
var $item = $(item);
var foldnumber = $item.data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
if ($item.height() > EXAMPLE_MAX_HEIGHT) {
$item.css({
"padding-bottom": 30
});
$item.find('code').height(EXAMPLE_MAX_HEIGHT);
$item.append('<span class="extend">展开更多……</span>');
};
});
$('.ydoc-example').delegate('.extend', 'click', function() {
var $this = $(this);
$this.removeClass('extend').addClass('fold');
$this.html('折叠代码');
$this.parent().children('.js-code').height('auto');
$this.parent().height('auto');
});
$('.ydoc-example').delegate('.fold', 'click', function() {
var $this = $(this);
var foldnumber = $this.parent().data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
$this.removeClass('fold').addClass('extend');
$this.parent().height(EXAMPLE_MAX_HEIGHT); // pre
$this.parent().children('.js-code').height(EXAMPLE_MAX_HEIGHT); // code
$this.html("展开更多……");
});
}
$(document).ready(fold);
</script>
</body>
</html>

195
static/doc/usage.html Normal file
View File

@ -0,0 +1,195 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta name="format-detection" content="telephone=no,email=no" />
<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>
<link rel="stylesheet" href="source/main.css" />
</head>
<body>
<div class="ydoc">
<header class="ydoc-header">
<div class="ydoc-header-area">
<a href="http://ued.qunar.com/ymfe/" class="navbar-brand">YMFE</a>
<button class="ydocIcon navbar-toggle">&#xf020;</button>
<nav class="ydoc-nav">
<ul class="navbar-left">
<li class="">
<a href="index.html">首页</a>
</li>
<li class="active">
<a href="usage.html">使用手册</a>
</li>
<li class="">
<a href="manage.html">管理学院</a>
</li>
<li class="">
<a href="mock.html">Mock功能</a>
</li>
<li class="">
<a href="api.html"></a>
</li>
</ul>
</nav>
</div>
</header>
<!-- <header style="height:20px"></header> -->
<!-- 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">
<div class="ydoc-container-content ">
<div class="content-left staticsidenav" role="complementary">
<nav class="docs-sidebar hidden-print hidden-xs hidden-sm">
<ul class="nav docs-sidenav">
<!-- <li > -->
<li >
<a href="usage-认识 YApi.html">认识 YApi</a>
</li>
<!-- <li > -->
<li >
<a href="usage-创建第一个API.html">创建第一个API</a>
</li>
<!-- <li > -->
<li >
<a href="usage-接口配置.html">接口配置</a>
</li>
<!-- <li > -->
<li >
<a href="usage-使用mock功能.html">使用mock功能</a>
</li>
<!-- <li > -->
<li >
<a href="usage-使用测试集.html">使用测试集</a>
</li>
<!-- <li > -->
<li >
<a href="usage-成为组长.html">成为组长</a>
</li>
<!-- <li > -->
<li >
<a href="usage-权限列表.html">权限列表</a>
</li>
</ul>
</nav>
</div>
<div class="content-right markdown-body use-sidebar" role="main">
<h2 class="subject" id="登录与注册">登录与注册 <a class="hashlink" href="#登录与注册">#</a></h2><h2 class="subject" id="首页">首页 <a class="hashlink" href="#首页">#</a></h2><h2 class="subject" id="项目页">项目页 <a class="hashlink" href="#项目页">#</a></h2><h2 class="subject" id="个人信息">个人信息 <a class="hashlink" href="#个人信息">#</a></h2>
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="copyright">
&copy; 2016 <a href="http://ued.qunar.com/ymfe/">YMFE</a> Team. Build by <a href="http://ued.qunar.com/ydoc/">ydoc</a>.
</div>
</footer>
</div>
<div class="open-panel"></div>
<div class="mask"></div>
<script src="source/main.js"></script>
<script src="source/app.js"></script>
<script>
var lineHeight = 18;
var EXAMPLE_MAX_HEIGHT;
function fold() {
// 折叠code
$('.markdown-body pre').css({
"line-height": lineHeight + "px"
});
$('.markdown-body pre').map(function(i, item) {
var $item = $(item);
var foldnumber = $item.data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
if ($item.height() > EXAMPLE_MAX_HEIGHT) {
$item.css({
"padding-bottom": 30
});
$item.find('code').height(EXAMPLE_MAX_HEIGHT);
$item.append('<span class="extend">展开更多……</span>');
};
});
$('.ydoc-example').delegate('.extend', 'click', function() {
var $this = $(this);
$this.removeClass('extend').addClass('fold');
$this.html('折叠代码');
$this.parent().children('.js-code').height('auto');
$this.parent().height('auto');
});
$('.ydoc-example').delegate('.fold', 'click', function() {
var $this = $(this);
var foldnumber = $this.parent().data('foldnumber');
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
$this.removeClass('fold').addClass('extend');
$this.parent().height(EXAMPLE_MAX_HEIGHT); // pre
$this.parent().children('.js-code').height(EXAMPLE_MAX_HEIGHT); // code
$this.html("展开更多……");
});
}
$(document).ready(fold);
</script>
</body>
</html>

View File

@ -58,13 +58,64 @@
},
"content": "./doc/home.md" // (markdown)
},{
"name": "start", // Page Name html : index.html
"title": "快速开始", // Page Title
"name": "usage", // Page Name html : index.html
"title": "使用手册", // Page Title
"banner": { // Banner
"title": "YApi",
"description": "高效、易用、功能强大、的api管理平台旨在为开发、产品、测试人员提供更优雅的接口管理服务。"
},
"content": "./doc/interface.md" // (markdown)
"content": {
"sidebar": true,
"multi": true,
"index": "./doc/usage/getfamiliar.md",
"pages": [{
"name": "认识 YApi",
"content": "./doc/usage/getfamiliar.md"
}, {
"name": "创建第一个API",
"content": "./doc/usage/quickstart.md"
}, {
"name": "接口配置",
"content": "./doc/usage/interface.md"
}, {
"name": "使用mock功能",
"content": "./doc/usage/mock.md"
}, {
"name": "使用测试集",
"content": "./doc/usage/case.md"
}, {
"name": "成为组长",
"content": "./doc/usage/leader.md"
}, {
"name": "权限列表",
"content": "./doc/usage/authority.md"
}]
}
},{
"name": "manage",
"title": "管理学院",
"banner": {
"title": "管理学院",
"description": "超级管理员、分组/项目组长的学院。"
},
"content": {
"sidebar": true,
"multi": true,
"index": "./doc/manage/intro.md",
"pages": [{
"name": "介绍",
"content": "./doc/manage/intro.md"
}, {
"name": "部署",
"content": "./doc/manage/build.md"
}, {
"name": "超管职责",
"content": "./doc/manage/admin.md"
}, {
"name": "版本升级",
"content": "./doc/manage/update.md"
}]
}
},{
"name": "mock", // Page Name html : index.html
"title": "Mock功能", // Page Title
@ -72,8 +123,33 @@
"title": "YApi",
"description": "高效、易用、功能强大、的api管理平台旨在为开发、产品、测试人员提供更优雅的接口管理服务。"
},
"content": "./doc/mock.md" // (markdown)
"content": {
"sidebar": true,
"multi": true,
"index": "./doc/usage/getfamiliar.md",
"pages": [{
"name": "认识 YApi",
"content": "./doc/usage/getfamiliar.md"
}, {
"name": "创建第一个API",
"content": "./doc/usage/quickstart.md"
}, {
"name": "接口配置",
"content": "./doc/usage/interface.md"
}, {
"name": "使用mock功能",
"content": "./doc/usage/mock.md"
}, {
"name": "使用测试集",
"content": "./doc/usage/case.md"
}, {
"name": "成为组长",
"content": "./doc/usage/leader.md"
}, {
"name": "权限列表",
"content": "./doc/usage/authority.md"
}]
}
},{
"name": "api",
"title": "",