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

This commit is contained in:
gaoxiaolin.gao 2018-04-28 19:39:19 +08:00
commit e5c9c25be8
34 changed files with 161 additions and 60 deletions

View File

@ -1,3 +1,8 @@
### v1.3.13
* 新增通过命令行导入 swagger 接口数据功能
* 接口请求设置新增异步处理特性
### v1.3.12
#### Feature

View File

@ -68,9 +68,20 @@ class InterfaceEdit extends Component {
componentDidMount() {
let domain = location.hostname + (location.port !== "" ? ":" + location.port : "");
let s;
let s, initData = false;
//因后端 node 仅支持 ws 暂不支持 wss
let wsProtocol = location.protocol === 'https' ? 'ws' : 'ws';
setTimeout(()=>{
if(initData === false){
this.setState({
curdata: this.props.curdata,
status: 1
})
initData = true;
}
}, 3000)
try {
s = new WebSocket(wsProtocol + '://' + domain + '/api/interface/solve_conflict?id=' + this.props.match.params.actionId);
s.onopen = () => {
@ -78,6 +89,7 @@ class InterfaceEdit extends Component {
}
s.onmessage = (e) => {
initData = true;
let result = JSON.parse(e.data);
if (result.errno === 0) {
this.setState({
@ -131,6 +143,9 @@ class InterfaceEdit extends Component {
</div>
:
null}
{
this.state.status === 0 && '正在加载,请耐心等待...'
}
</div>
}

View File

@ -129,12 +129,14 @@ function sandboxByNode(sandbox={}, script){
return sandbox;
}
function sandbox(context={}, script){
async function sandbox(context={}, script){
if(isNode){
try{
context.context = context;
context.console = console;
context.Promise = Promise;
context.setTimeout = setTimeout;
context = sandboxByNode(context, script)
}catch(err){
err.message = `Script: ${script}
@ -144,6 +146,15 @@ function sandbox(context={}, script){
}else{
context = sandboxByBrowser(context, script)
}
if(context.promise && typeof context.promise === 'object' && context.promise.then){
try{
await context.promise
}catch(err){
err.message = `Script: ${script}
message: ${err.message}`
throw err;
}
}
return context;
@ -179,6 +190,7 @@ async function crossRequest(defaultOptions, preScript, afterScript) {
query: query,
requestHeader: options.headers || {},
requestBody: options.data,
promise: false,
utils: {
_: _,
base64: utils.base64,
@ -188,12 +200,13 @@ async function crossRequest(defaultOptions, preScript, afterScript) {
sha256: utils.sha256,
sha384: utils.sha384,
sha512: utils.sha512,
unbase64: utils.unbase64
unbase64: utils.unbase64,
axios: axios
}
};
if (preScript) {
context = sandbox(context, preScript);
context = await sandbox(context, preScript);
defaultOptions.url = options.url = URL.format({
protocol: urlObj.protocol,
host: urlObj.host,
@ -237,7 +250,7 @@ async function crossRequest(defaultOptions, preScript, afterScript) {
context.responseHeader = data.res.header;
context.responseStatus = data.res.status;
context.runTime = data.runTime;
context = sandbox(context, afterScript);
context = await sandbox(context, afterScript);
data.res.body = context.responseData;
data.res.header = context.responseHeader;
data.res.status = context.responseStatus;

View File

@ -56,29 +56,34 @@ YApi 支持通过命令行导入接口数据,他的应用场景是做自动化
### 使用方法
第一步,确保 `yapi-cli >= 1.2.6` 版本,如果低于此版本请升级 `yapi-cli` 工具
第一步,确保 `yapi-cli >= 1.2.7` 版本,如果低于此版本请升级 `yapi-cli` 工具
```
npm install -g yapi-cli
```
第二步,新建配置文件 `yapi-import.json`,如下所示
第二步,在任意一个目录下新建配置文件 `yapi-import.json`内容如下:
```json
{
"type": "swagger",
"token": "17fba0027f300248b804",
"file": "swagger.json",
"merge": false,
"server": "http://yapi.local.qunar.com:3000"
}
```
`type` 是数据数据方式,目前官方只支持 swagger
`token` 是项目token`项目设置 -> token` 设置获取
`file` 是 swagger 接口文档文件,可使用绝对路径或 url
`merge` 是否覆盖旧的接口,默认不开启,配置 `true` 开启
`server` 是yapi服务器地址
第三步,在新建配置文件的当前目录,执行下面指令
第三步,在`新建配置文件的当前目录`,执行下面指令
```
yapi import

View File

@ -148,9 +148,30 @@ context.utils = {
sha384 //转换字符串为 sha384 编码
sha512 //转换字符串为 sha512 编码
unbase64 //转换 base64 编码为字符串
axios // axios 库,可用于 api 请求,官网 https://github.com/axios/axios
}
```
### 异步处理v1.3.13+支持)
处理请求参数,或返回数据,可能还会涉及到异步处理,比如 ajax 请求YApi 在 v1.3.13 版本支持了异步处理。
```javascript
context.promise = new Promise(function(resolve){
var api = context.utils.axios.get('http://yapi.local.qunar.com:3000/api/user/status')
api.then(function(result){
//...
console.log(result.data)
resolve()
})
})
```
使用方法就是在 `context` 里面添加 `promise` 参数,并且返回一个 Promise不熟悉 Promise 的童鞋可以查下相关用法ajax 请求可以使用 `context.utils.axios` 库。
> 处理完成后,不要忘记 `resolve()`,不然会一直处于挂起状态
## token配置
每个项目都有唯一的标识token用户可以使用这个token值来请求项目的所有资源数据。目前用到的地方是接口的<a href="./case.md">自动化测试</a>,用户不需要登录就可以访问接口测试结果信息。

2
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "yapi",
"version": "1.3.12",
"version": "1.3.13",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@ -1,6 +1,6 @@
{
"name": "yapi",
"version": "1.3.12",
"version": "1.3.14",
"description": "YAPI",
"main": "index.js",
"scripts": {

View File

@ -30,14 +30,9 @@ class baseController {
'/api/user/avatar',
'/api/user/login_by_ldap'
];
//let openApiRouter = /^\/api\/open\/.*/
if (ignoreRouter.indexOf(ctx.path) === 0) {
if (ignoreRouter.indexOf(ctx.path) > -1) {
this.$auth = true;
}
// else if(openApiRouter.test(ctx.path)){
// this.$auth = true;
// }
else {
}else {
await this.checkLogin(ctx);
}
@ -49,15 +44,16 @@ class baseController {
'/api/interface/up',
'/api/interface/add_cat'
]
let token = ctx.query.token || ctx.request.body.token;
if(token && openApiRouter.indexOf(ctx.path) > 0){
let params = Object.assign({}, ctx.query, ctx.request.body)
let token = params.token ;
if(token && openApiRouter.indexOf(ctx.path) > -1){
if(this.$auth){
ctx.params.project_id = await this.getProjectIdByToken(token)
this.$tokenAuth = true;
}
if(!token){
return
return this.$tokenAuth = true;
}
let checkId = await this.getProjectIdByToken(token);
let projectData = await this.projectModel.get(checkId);
if(projectData) {
@ -72,7 +68,6 @@ class baseController {
this.$auth = true
};
}
}
async getProjectIdByToken(token){
@ -89,12 +84,19 @@ class baseController {
async checkLogin(ctx) {
let token = ctx.cookies.get('_yapi_token');
let uid = ctx.cookies.get('_yapi_uid');
try {
if (!token || !uid) return false;
let userInst = yapi.getInst(userModel); //创建user实体
let result = await userInst.findById(uid);
let decoded = jwt.verify(token, result.passsalt);
if(!result) return false;
let decoded;
try{
decoded = jwt.verify(token, result.passsalt);
}catch(err){
return false;
}
if (decoded.uid == uid) {
this.$uid = uid;

View File

@ -37,6 +37,7 @@ class openController extends baseController{
runAutoTest: {
'*id': 'number',
'env_name': 'string',
'project_id': "string",
'token': 'string',
'mode' : {
type: 'string',
@ -53,7 +54,7 @@ class openController extends baseController{
'*token': 'string',
'json': 'string',
'project_id': "string",
"dataSync": {
"merge": {
type: 'boolean',
default: false
}
@ -66,9 +67,8 @@ class openController extends baseController{
let url = ctx.params.url;
let content = ctx.params.json;
let project_id = ctx.params.project_id;
let dataSync = ctx.params.dataSync;
let dataSync = ctx.params.merge;
let token = ctx.params.token;
if(!type || !importDataModule[type]){
return ctx.body = yapi.commons.resReturn(null, 40022, '不存在的导入方式');
}
@ -124,6 +124,7 @@ class openController extends baseController{
}
async runAutoTest(ctx){
const projectId = ctx.params.project_id;
const startTime = new Date().getTime();
const records = this.records = {};
const reports = this.reports = {};
@ -135,12 +136,6 @@ class openController extends baseController{
return ctx.body = yapi.commons.resReturn(null, 40022, 'id值不存在');
}
let checkId = await this.getProjectIdByToken(token);
let projectId = colData.project_id;
if(checkId !== projectId){
return ctx.body = yapi.commons.resReturn(null, 40033, '没有权限');
}
let projectData = await this.projectModel.get(projectId);
let caseList = await yapi.commons.getCaseList(id);

View File

@ -425,18 +425,18 @@ exports.createAction = (
ctx.request.body,
ctx.params
);
// let validResult = yapi.commons.validateParams(
// inst.schemaMap[action],
// ctx.params
// );
let validResult = yapi.commons.validateParams(
inst.schemaMap[action],
ctx.params
);
// if (!validResult.valid) {
// return (ctx.body = yapi.commons.resReturn(
// null,
// 400,
// validResult.message
// ));
// }
if (!validResult.valid) {
return (ctx.body = yapi.commons.resReturn(
null,
400,
validResult.message
));
}
}
if (inst.$auth === true) {
await inst[action].call(inst, ctx);

View File

@ -7,7 +7,12 @@
<div class="icon">&#xf0fd;</div>
<input type="text" class="input js-input" placeholder="搜索" />
<div class="m-search-result js-search-result"></div>
</div></div><nav class="m-header-nav js-nav"><ul class="m-header-items"><li class="item active"><a class="href" href="index.html">教程</a></li><li class="item "><a class="href" href="../devops/index.html">内网部署</a></li></ul></nav><div id="js-nav-btn" class="m-header-btn ui-font-ydoc"></div></header><div class="m-content" id="js-content"><div id="markdown-body" class="m-content-container markdown-body"><h3 id="v1.3.12">v1.3.12</h3>
</div></div><nav class="m-header-nav js-nav"><ul class="m-header-items"><li class="item active"><a class="href" href="index.html">教程</a></li><li class="item "><a class="href" href="../devops/index.html">内网部署</a></li></ul></nav><div id="js-nav-btn" class="m-header-btn ui-font-ydoc"></div></header><div class="m-content" id="js-content"><div id="markdown-body" class="m-content-container markdown-body"><h3 id="v1.3.13">v1.3.13</h3>
<ul>
<li>新增通过命令行导入 swagger 接口数据功能</li>
<li>接口请求设置新增异步处理特性</li>
</ul>
<h3 id="v1.3.12">v1.3.12</h3>
<h4>Feature</h4>
<ul>
<li>接口列表支持路径查询</li>

View File

@ -39,21 +39,24 @@
<h2 id="通过命令行导入接口数据">通过命令行导入接口数据</h2>
<p>YApi 支持通过命令行导入接口数据,他的应用场景是做自动化集成,比如配合 swagger ,接口文档前端不用维护,交由后端生成。</p>
<h3 id="通过命令行导入接口数据-使用方法">使用方法</h3>
<p>第一步,确保 <code>yapi-cli &gt;= 1.2.6</code> 版本,如果低于此版本请升级 <code>yapi-cli</code> 工具</p>
<p>第一步,确保 <code>yapi-cli &gt;= 1.2.7</code> 版本,如果低于此版本请升级 <code>yapi-cli</code> 工具</p>
<pre><code>npm install -g yapi-cli
</code></pre>
<p>第二步,新建配置文件 <code>yapi-import.json</code>,如下所示</p>
<p>第二步,在任意一个目录下新建配置文件 <code>yapi-import.json</code>内容如下:</p>
<pre><code class="language-json"><span class="token punctuation">{</span>
<span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"swagger"</span><span class="token punctuation">,</span>
<span class="token property">"token"</span><span class="token operator">:</span> <span class="token string">"17fba0027f300248b804"</span><span class="token punctuation">,</span>
<span class="token property">"file"</span><span class="token operator">:</span> <span class="token string">"swagger.json"</span><span class="token punctuation">,</span>
<span class="token property">"merge"</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
<span class="token property">"server"</span><span class="token operator">:</span> <span class="token string">"http://yapi.local.qunar.com:3000"</span>
<span class="token punctuation">}</span>
</code></pre>
<p><code>type</code> 是数据数据方式,目前官方只支持 swagger</p>
<p><code>token</code> 是项目token<code>项目设置 -&gt; token</code> 设置获取</p>
<p><code>file</code> 是 swagger 接口文档文件,可使用绝对路径或 url</p>
<p><code>merge</code> 是否覆盖旧的接口,默认不开启,配置 <code>true</code> 开启</p>
<p><code>server</code> 是yapi服务器地址</p>
<p>第三步,在新建配置文件的当前目录,执行下面指令</p>
<p>第三步,在<code>新建配置文件的当前目录</code>,执行下面指令</p>
<pre><code>yapi import
</code></pre>
</div><div class="m-content-container m-paging"><div class="m-paging-prev m-paging-item"><a href="case.html" class="href"><span class="ui-font-ydoc"></span>自动化测试</a></div><div class="m-paging-next m-paging-item"><a href="export-data.html" class="href">数据导出<span class="ui-font-ydoc"></span></a></div></div></div></div></div><div><div class="m-mask js-mask">

View File

@ -121,8 +121,25 @@
sha384 //&#x8F6C;&#x6362;&#x5B57;&#x7B26;&#x4E32;&#x4E3A; sha384 &#x7F16;&#x7801;
sha512 //&#x8F6C;&#x6362;&#x5B57;&#x7B26;&#x4E32;&#x4E3A; sha512 &#x7F16;&#x7801;
unbase64 //&#x8F6C;&#x6362; base64 &#x7F16;&#x7801;&#x4E3A;&#x5B57;&#x7B26;&#x4E32;
axios // axios &#x5E93;&#xFF0C;&#x53EF;&#x7528;&#x4E8E; api &#x8BF7;&#x6C42;&#xFF0C;&#x5B98;&#x7F51; https://github.com/axios/axios
}
</code></pre>
<h3 id="请求配置-异步处理v1.3.13+支持)">异步处理v1.3.13+支持)</h3>
<p>处理请求参数,或返回数据,可能还会涉及到异步处理,比如 ajax 请求YApi 在 v1.3.13 版本支持了异步处理。</p>
<pre><code class="language-javascript">context<span class="token punctuation">.</span>promise <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Promise</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span>resolve<span class="token punctuation">)</span><span class="token punctuation">{</span>
<span class="token keyword">var</span> api <span class="token operator">=</span> context<span class="token punctuation">.</span>utils<span class="token punctuation">.</span>axios<span class="token punctuation">.</span><span class="token keyword">get</span><span class="token punctuation">(</span><span class="token string">'http://yapi.local.qunar.com:3000/api/user/status'</span><span class="token punctuation">)</span>
api<span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span>result<span class="token punctuation">)</span><span class="token punctuation">{</span>
<span class="token comment">//...</span>
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>result<span class="token punctuation">.</span>data<span class="token punctuation">)</span>
<span class="token function">resolve</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span>
</code></pre>
<p>使用方法就是在 <code>context</code> 里面添加 <code>promise</code> 参数,并且返回一个 Promise不熟悉 Promise 的童鞋可以查下相关用法ajax 请求可以使用 <code>context.utils.axios</code> 库。</p>
<blockquote>
<p>处理完成后,不要忘记 <code>resolve()</code>,不然会一直处于挂起状态</p>
</blockquote>
<h2 id="token配置">token配置</h2>
<p>每个项目都有唯一的标识token用户可以使用这个token值来请求项目的所有资源数据。目前用到的地方是接口的<a href="./case.html">自动化测试</a>,用户不需要登录就可以访问接口测试结果信息。</p>
<h2 id="项目克隆">项目克隆</h2>

View File

@ -7,7 +7,7 @@
<div class="icon">&#xf0fd;</div>
<input type="text" class="input js-input" placeholder="搜索" />
<div class="m-search-result js-search-result"></div>
</div></div><nav class="m-header-nav js-nav"><ul class="m-header-items"><li class="item "><a class="href" href="documents/index.html">教程</a></li><li class="item "><a class="href" href="devops/index.html">内网部署</a></li></ul></nav><div id="js-nav-btn" class="m-header-btn ui-font-ydoc"></div></header><div class="m-content" id="js-content"><div><div class="g-home"><section class="m-section home"><div class="m-section-container"><div class="m-section-title"><h4 class="name">YApi</h4><p class="desc">旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以帮助开发者轻松创建、发布、维护 API</p><div class="m-section-btngroup"><a href="./documents/index.html"><div class="btn ">开始</div></a><a href="https://github.com/ymfe/yapi"><div class="btn btn-ghost">Github &gt;</div></a></div><p class="caption">当前版本: v1.3.12</p></div><div class="m-section-banner"><img src="./ydoc/images/dogbg@1x.png" alt="bg" srcSet="./ydoc/images/dogbg@2x.png 2x"/></div></div></section><section class="m-section feature"><div class="m-section-container"><div class="m-section-box"><div class="item"><h6 class="title">权限管理</h6><p class="desc">YApi 成熟的团队管理扁平化项目权限配置满足各类企业的需求</p></div><div class="item"><h6 class="title">可视化接口管理</h6><p class="desc">基于 websocket 的多人协作接口编辑功能和类 postman 测试工具,让多人协作成倍提升开发效率</p></div><div class="item"><h6 class="title">Mock Server</h6><p class="desc">易用的 Mock Server再也不用担心 mock 数据的生成了</p></div><div class="item"><h6 class="title">自动化测试</h6><p class="desc">完善的接口自动化测试,保证数据的正确性</p></div><div class="item"><h6 class="title">数据导入</h6><p class="desc">支持导入 swagger, postman, har 数据格式,方便迁移旧项目</p></div><div class="item"><h6 class="title">插件机制</h6><p class="desc">强大的插件机制,满足各类业务需求</p></div></div></div></section></div><footer class="m-footer"><div class="m-footer-container"><div class="m-footer-links"><div class="group"><p class="title">团队网址</p><ul><li><a class="href" href="https://ymfe.org/">YMFE</a></li><li><a class="href" href="https://blog.ymfe.org/">YMFE Blog</a></li></ul></div><div class="group"><p class="title">Git仓库</p><ul><li><a class="href" href="https://github.com/YMFE/yapi">Github</a></li><li><a class="href" href="https://github.com/YMFE/yapi/issues">Github Issue</a></li></ul></div></div><div class="m-footer-title"><p class="copyright">© 2018 <a class="href" href="https://ymfe.org/">YMFE Team</a></p><p>Build by <a class="href" href="https://ydoc.ymfe.org/">ydoc</a></p></div></div></footer></div></div></div></div><div><div class="m-mask js-mask">
</div></div><nav class="m-header-nav js-nav"><ul class="m-header-items"><li class="item "><a class="href" href="documents/index.html">教程</a></li><li class="item "><a class="href" href="devops/index.html">内网部署</a></li></ul></nav><div id="js-nav-btn" class="m-header-btn ui-font-ydoc"></div></header><div class="m-content" id="js-content"><div><div class="g-home"><section class="m-section home"><div class="m-section-container"><div class="m-section-title"><h4 class="name">YApi</h4><p class="desc">旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以帮助开发者轻松创建、发布、维护 API</p><div class="m-section-btngroup"><a href="./documents/index.html"><div class="btn ">开始</div></a><a href="https://github.com/ymfe/yapi"><div class="btn btn-ghost">Github &gt;</div></a></div><p class="caption">当前版本: v1.3.13</p></div><div class="m-section-banner"><img src="./ydoc/images/dogbg@1x.png" alt="bg" srcSet="./ydoc/images/dogbg@2x.png 2x"/></div></div></section><section class="m-section feature"><div class="m-section-container"><div class="m-section-box"><div class="item"><h6 class="title">权限管理</h6><p class="desc">YApi 成熟的团队管理扁平化项目权限配置满足各类企业的需求</p></div><div class="item"><h6 class="title">可视化接口管理</h6><p class="desc">基于 websocket 的多人协作接口编辑功能和类 postman 测试工具,让多人协作成倍提升开发效率</p></div><div class="item"><h6 class="title">Mock Server</h6><p class="desc">易用的 Mock Server再也不用担心 mock 数据的生成了</p></div><div class="item"><h6 class="title">自动化测试</h6><p class="desc">完善的接口自动化测试,保证数据的正确性</p></div><div class="item"><h6 class="title">数据导入</h6><p class="desc">支持导入 swagger, postman, har 数据格式,方便迁移旧项目</p></div><div class="item"><h6 class="title">插件机制</h6><p class="desc">强大的插件机制,满足各类业务需求</p></div></div></div></section></div><footer class="m-footer"><div class="m-footer-container"><div class="m-footer-links"><div class="group"><p class="title">团队网址</p><ul><li><a class="href" href="https://ymfe.org/">YMFE</a></li><li><a class="href" href="https://blog.ymfe.org/">YMFE Blog</a></li></ul></div><div class="group"><p class="title">Git仓库</p><ul><li><a class="href" href="https://github.com/YMFE/yapi">Github</a></li><li><a class="href" href="https://github.com/YMFE/yapi/issues">Github Issue</a></li></ul></div></div><div class="m-footer-title"><p class="copyright">© 2018 <a class="href" href="https://ymfe.org/">YMFE Team</a></p><p>Build by <a class="href" href="https://ydoc.ymfe.org/">ydoc</a></p></div></div></footer></div></div></div></div><div><div class="m-mask js-mask">
<div class="container">
<img src="" alt="" class="img js-mask-img" />
</div>

View File

@ -230,7 +230,12 @@ window.ydoc_plugin_search_json = {
{
"title": "工具函数",
"url": "/documents/project.html#请求配置-工具函数",
"content": "工具函数context.utils = { _ //underscore 函数,详细 API 查看官网 http://underscorejs.org/\n base64 //转换字符串为 base64 编码\n md5 //转换字符串为 md5 编码\n sha1 //转换字符串为 sha1 编码\n sha224 //转换字符串为 sha224 编码\n sha256 //转换字符串为 sha256 编码\n sha384 //转换字符串为 sha384 编码\n sha512 //转换字符串为 sha512 编码\n unbase64 //转换 base64 编码为字符串 \n}\n"
"content": "工具函数context.utils = { _ //underscore 函数,详细 API 查看官网 http://underscorejs.org/\n base64 //转换字符串为 base64 编码\n md5 //转换字符串为 md5 编码\n sha1 //转换字符串为 sha1 编码\n sha224 //转换字符串为 sha224 编码\n sha256 //转换字符串为 sha256 编码\n sha384 //转换字符串为 sha384 编码\n sha512 //转换字符串为 sha512 编码\n unbase64 //转换 base64 编码为字符串 \n axios // axios 库,可用于 api 请求,官网 https://github.com/axios/axios\n}\n"
},
{
"title": "异步处理v1.3.13+支持)",
"url": "/documents/project.html#请求配置-异步处理v1.3.13+支持)",
"content": "异步处理v1.3.13+支持)处理请求参数,或返回数据,可能还会涉及到异步处理,比如 ajax 请求YApi 在 v1.3.13 版本支持了异步处理。context.promise = new Promise(function(resolve){ var api = context.utils.axios.get('http://yapi.local.qunar.com:3000/api/user/status')\n api.then(function(result){\n //...\n console.log(result.data)\n resolve()\n })\n\n})\n使用方法就是在 context 里面添加 promise 参数,并且返回一个 Promise不熟悉 Promise 的童鞋可以查下相关用法ajax 请求可以使用 context.utils.axios 库。处理完成后,不要忘记 resolve(),不然会一直处于挂起状态\n"
},
{
"title": "token配置",
@ -302,7 +307,12 @@ window.ydoc_plugin_search_json = {
{
"title": "工具函数",
"url": "/documents/project.html#请求配置-工具函数",
"content": "工具函数context.utils = { _ //underscore 函数,详细 API 查看官网 http://underscorejs.org/\n base64 //转换字符串为 base64 编码\n md5 //转换字符串为 md5 编码\n sha1 //转换字符串为 sha1 编码\n sha224 //转换字符串为 sha224 编码\n sha256 //转换字符串为 sha256 编码\n sha384 //转换字符串为 sha384 编码\n sha512 //转换字符串为 sha512 编码\n unbase64 //转换 base64 编码为字符串 \n}\n"
"content": "工具函数context.utils = { _ //underscore 函数,详细 API 查看官网 http://underscorejs.org/\n base64 //转换字符串为 base64 编码\n md5 //转换字符串为 md5 编码\n sha1 //转换字符串为 sha1 编码\n sha224 //转换字符串为 sha224 编码\n sha256 //转换字符串为 sha256 编码\n sha384 //转换字符串为 sha384 编码\n sha512 //转换字符串为 sha512 编码\n unbase64 //转换 base64 编码为字符串 \n axios // axios 库,可用于 api 请求,官网 https://github.com/axios/axios\n}\n"
},
{
"title": "异步处理v1.3.13+支持)",
"url": "/documents/project.html#请求配置-异步处理v1.3.13+支持)",
"content": "异步处理v1.3.13+支持)处理请求参数,或返回数据,可能还会涉及到异步处理,比如 ajax 请求YApi 在 v1.3.13 版本支持了异步处理。context.promise = new Promise(function(resolve){ var api = context.utils.axios.get('http://yapi.local.qunar.com:3000/api/user/status')\n api.then(function(result){\n //...\n console.log(result.data)\n resolve()\n })\n\n})\n使用方法就是在 context 里面添加 promise 参数,并且返回一个 Promise不熟悉 Promise 的童鞋可以查下相关用法ajax 请求可以使用 context.utils.axios 库。处理完成后,不要忘记 resolve(),不然会一直处于挂起状态\n"
},
{
"title": "token配置",
@ -735,7 +745,7 @@ window.ydoc_plugin_search_json = {
{
"title": "使用方法",
"url": "/documents/data.html#通过命令行导入接口数据-使用方法",
"content": "使用方法第一步,确保 yapi-cli >= 1.2.6 版本,如果低于此版本请升级 yapi-cli 工具npm install -g yapi-cli第二步新建配置文件 yapi-import.json如下所示{ \"type\": \"swagger\",\n \"token\": \"17fba0027f300248b804\",\n \"file\": \"swagger.json\",\n \"server\": \"http://yapi.local.qunar.com:3000\"\n}\ntoken 是项目token在 项目设置 -> token 设置获取file 是 swagger 接口文档文件,可使用绝对路径或 urlserver 是yapi服务器地址第三步在新建配置文件的当前目录执行下面指令yapi import"
"content": "使用方法第一步,确保 yapi-cli >= 1.2.7 版本,如果低于此版本请升级 yapi-cli 工具npm install -g yapi-cli第二步在任意一个目录下新建配置文件 yapi-import.json内容如下:{ \"type\": \"swagger\",\n \"token\": \"17fba0027f300248b804\",\n \"file\": \"swagger.json\",\n \"merge\": false,\n \"server\": \"http://yapi.local.qunar.com:3000\"\n}\ntype 是数据数据方式,目前官方只支持 swaggertoken 是项目token在 项目设置 -> token 设置获取file 是 swagger 接口文档文件,可使用绝对路径或 urlmerge 是否覆盖旧的接口,默认不开启,配置 true 开启server 是yapi服务器地址第三步在新建配置文件的当前目录执行下面指令yapi import"
}
]
},
@ -772,7 +782,7 @@ window.ydoc_plugin_search_json = {
{
"title": "使用方法",
"url": "/documents/data.html#通过命令行导入接口数据-使用方法",
"content": "使用方法第一步,确保 yapi-cli >= 1.2.6 版本,如果低于此版本请升级 yapi-cli 工具npm install -g yapi-cli第二步新建配置文件 yapi-import.json如下所示{ \"type\": \"swagger\",\n \"token\": \"17fba0027f300248b804\",\n \"file\": \"swagger.json\",\n \"server\": \"http://yapi.local.qunar.com:3000\"\n}\ntoken 是项目token在 项目设置 -> token 设置获取file 是 swagger 接口文档文件,可使用绝对路径或 urlserver 是yapi服务器地址第三步在新建配置文件的当前目录执行下面指令yapi import"
"content": "使用方法第一步,确保 yapi-cli >= 1.2.7 版本,如果低于此版本请升级 yapi-cli 工具npm install -g yapi-cli第二步在任意一个目录下新建配置文件 yapi-import.json内容如下:{ \"type\": \"swagger\",\n \"token\": \"17fba0027f300248b804\",\n \"file\": \"swagger.json\",\n \"merge\": false,\n \"server\": \"http://yapi.local.qunar.com:3000\"\n}\ntype 是数据数据方式,目前官方只支持 swaggertoken 是项目token在 项目设置 -> token 设置获取file 是 swagger 接口文档文件,可使用绝对路径或 urlmerge 是否覆盖旧的接口,默认不开启,配置 true 开启server 是yapi服务器地址第三步在新建配置文件的当前目录执行下面指令yapi import"
}
]
},
@ -1149,6 +1159,11 @@ window.ydoc_plugin_search_json = {
"content": "",
"url": "/documents/CHANGELOG.html",
"children": [
{
"title": "v1.3.13",
"url": "/documents/CHANGELOG.html#v1.3.13",
"content": "v1.3.13新增通过命令行导入 swagger 接口数据功能\n接口请求设置新增异步处理特性\n"
},
{
"title": "v1.3.12",
"url": "/documents/CHANGELOG.html#v1.3.12",
@ -1276,6 +1291,11 @@ window.ydoc_plugin_search_json = {
"content": "",
"url": "/documents/CHANGELOG.html",
"children": [
{
"title": "v1.3.13",
"url": "/documents/CHANGELOG.html#v1.3.13",
"content": "v1.3.13新增通过命令行导入 swagger 接口数据功能\n接口请求设置新增异步处理特性\n"
},
{
"title": "v1.3.12",
"url": "/documents/CHANGELOG.html#v1.3.12",

View File

@ -1 +1 @@
window.WEBPACK_ASSETS = {"index.js":{"js":"index@b5ed6dbaaaa584a1456f.js","css":"index@b5ed6dbaaaa584a1456f.css"},"lib":{"js":"lib@bcd10eb7b8990eef77fb.js"},"lib2":{"js":"lib2@f97b0358ee9bfe96c7d6.js"},"lib3":{"js":"lib3@6e5ce3ba165e1aeadedd.js"},"manifest":{"js":"manifest@f2f4bd774d6c221b3d5f.js"}}
window.WEBPACK_ASSETS = {"index.js":{"js":"index@923b9460cbc86f3c61fe.js","css":"index@923b9460cbc86f3c61fe.css"},"lib":{"js":"lib@6b7da8e293935ba6b744.js"},"lib2":{"js":"lib2@8a32896cdb39f0c38d0d.js"},"lib3":{"js":"lib3@79a8bb57f871305c9306.js"},"manifest":{"js":"manifest@f2f4bd774d6c221b3d5f.js"}}

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long