VirAPI””¨è°‘°
…MockJsè”跱跗è‰è§è°‘è…‰‰‘è…é‘“é
[VirAPI‘ ](http://www.virapi.com/?_from=github)
[–](http://www.virapi.com/article.html?_from=github)
·
[…](http://www.virapi.com/about.html?_from=github)
·
[§°](http://console.virapi.com/?_from=github)
[![node-current](https://img.shields.io/badge/NodeJs-%3E%3D8.9.0-brightgreen)](https://nodejs.org/en/)
[![egg-current](https://img.shields.io/badge/EggJs-%5E2.15.1-brightgreen)](https://eggjs.org/zh-cn/intro/quickstart.html)
[![mongo-current](https://img.shields.io/badge/MongoDB-%3E%3D3.4.1-brightgreen)](https://www.mongodb.com/try)
[![mockjs-current](https://img.shields.io/badge/MockJs-%5E1.1.0-brightgreen)](http://mockjs.com/)
[![license-current](https://img.shields.io/badge/License-Apache--2.0-blue)](http://www.apache.org/licenses/LICENSE-2.0.html)
## VirAPI
VirAPIVirtual API‰”” ¨è°‘°é…谨跱“”””MockJsèè·±—è‰è§“”°°è–”¤é”¨
éèVirAPIéèè¨URLèé—è·—è‰éè“”°è‰·App°¨‘鉉蔤–¨èèè—è—é—‰…‘”èéè‘éVirAPI‰
**VirAPIè‰è‰**
+ …Mockè”é‰è°“
+ 觖“觗门§é‰
+ ”¤§è·±±GETPOSTPUTDELETE‰
+ è·±ééèééè·±è
+ é””¨–èé…‘
+ èè·±——°è
+ ””¨–ééè’
+ 鱓—…è—é¨é…Mock…
+ …èé¨
+ ......
## VirAPI‰
”‰UI““[https://github.com/bluvenr/open_virapi_front_end](https://github.com/bluvenr/open_virapi_front_end)
### è–
+ NodeJs(NPM)
+ MongoDB
锨[eggjs](https://eggjs.org/zh-cn/intro/quickstart.html)éè‘é
### èè&é¨
…艧è`npm install`‰è…é‰éè–…
°èèèè·‰§è`npm run dev`
èèè·‰§è`npm start`¤—è…é—鉧è`npm stop`”±eggjsè·”éèé`npm restart`
éè¤`7001`°èé—`http://127.0.0.1:7001/`è…§°ééè騰é…nginx–apacheèèé‘
### éé……
éé…–”¨`config/config.default.js`–蔨è¤è–éèè‰é…¨‘`config.local.js`–èèé…°
éè¤`config.default.js`–…
``` javascript
/* eslint valid-jsdoc: "off" */
'use strict';
const fs = require('fs');
const path = require('path');
/**
* @param {Egg.EggAppInfo} appInfo app info
*/
module.exports = appInfo => {
/**
* built-in config
* @type {Egg.EggAppConfig}
**/
const config = {
mongoose: {
// url: 'mongodb://127.0.0.1:27017/open_virapi_db',
options: {
// useMongoClient: true,
autoReconnect: true,
reconnectTries: Number.MAX_VALUE,
bufferMaxEntries: 0,
},
},
bcrypt: {
saltRounds: 10,
},
security: {
csrf: {
enable: false,
ignoreJSON: true,
},
domainWhiteList: [
'http://localhost:8080',
],
},
validate: {
convert: true,
},
cors: {
// origin: '*',
allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH,OPTIONS',
},
jwt: {
secret: 'virapi-202008192239',
},
proxy: true, // éèipsè·–nginx±IP
session: {
key: 'Vir_SESSION', // ‰è Session Cookie é”—
maxAge: 2 * 3600 * 1000, // Session ¤§‰—é—
httpOnly: true,
encrypt: true,
renew: true, // èé—ééésessionèé—é—
},
static: {
prefix: '/',
dir: path.join(appInfo.baseDir, 'app/public'),
dynamic: true,
preload: false,
maxAge: 0,
buffer: false,
},
};
// use for cookie sign key, should change to your own and keep security
config.keys = appInfo.name + '_hNW87vqPkMiMpLBHEtolB3Yg6vQsk5Ip4AJzCih2QCXbZBmjh5I033ELjdwB';
// add your middleware config here
config.middleware = [
'errorHandler',
];
config.siteFile = {
'/favicon.ico': fs.readFileSync(appInfo.baseDir + '/app/public/favicon.ico'),
};
// add your user config here
const userConfig = {
// myAppName: 'egg',
imgUri: '/images',
imgDir: appInfo.baseDir + '/app/public/images',
};
return {
...config,
...userConfig,
};
};
```
¨è‰é…°–`config.local.js`‘èé……è°
``` javascript
'use strict';
// cookie & session °‰…¨—
exports.keys = 'xxxxxxxxx'; // èè‰éè°cookiesession‰°—”¨°è°
// MongoDB …°
exports.mongoose = {
client: {
url: 'mongodb://127.0.0.1:27017/local_virapi_db', // mongo°“èé—°
options: {
// useMongoClient: true,
autoReconnect: true,
reconnectTries: Number.MAX_VALUE,
bufferMaxEntries: 0,
},
},
};
// ‰èèé—
exports.imgUri = 'http://{‰èé—°}'; // èè‰èé…èè°
```
### Mongo°“
觰é觖跨mongo‰¨¨‰§è‘¤§è·
```
// è…Mongo‘¤°
mongo 127.0.0.1:27017/local_virapi_db; // è·Mongoèé—°
// °°“
use local_virapi_db; // è·Mongo°
// ’…§è·
db.getCollection('user').insertOne({
"nickname" : "admin",
"vir_uid" : "vir_admin",
"vir_uid_updated" : null,
"email" : "admin@virapi.com",
"password" : "$2a$10$6fam2XUhNqU0nTNixjuoBuCx5aK2R8t.vEndOuVQ6vxVrinWXu9wy",
"avatar" : "/default_avatar.jpg",
"apps_count" : 0,
"login_date" : ISODate("2020-08-21T12:35:47.312Z"),
"status" : 1,
"created" : ISODate("2020-08-19T15:20:43.192Z"),
"updated" : ISODate("2020-08-21T12:35:47.315Z"),
"__v" : 0
});
```
…è·`admin@virapi.com`éè¤`123456`
**è·¨é**éè·‰…¨
## é¨èéé
![–°””¨](https://images.gitee.com/uploads/images/2020/0827/020542_2a3ddd7c_863133.png)
–°””¨¤
![–°](https://images.gitee.com/uploads/images/2020/0827/020624_3087b5c5_863133.png)
–°¤
![””¨](https://images.gitee.com/uploads/images/2020/0827/013613_27aa4825_863133.png)
””¨¤
![](https://images.gitee.com/uploads/images/2020/0827/013730_41332d18_863133.png)
¤
## è觉—VirAPI‰°è·è¤”“~
è·¤¨`virapi`
|
ӏ
|
è
|
| --------- | --------- |
|
|
|
褧éè[Gitter](https://gitter.im/virapi/feedback)‘é’è”