5分钟构建一个Restful后端

原材料

  • express

  • mongoose

  • seven-express

  • express-session

Start

  • 运用npm装置 express脚手架

    $ npm install -g --save express express-generator
  • 初始化项目

    默许是运用Jade模版,能够运用--view== 来指明其他的模版.
    
    $ express seven-test
    $ cd seven-test
    $ npm install
    $ npm install mongoose seven-express express-session

Configure

举行 app.js 设置

默许的设置比较烦琐,我们先来精简一下设置文件,只留下我们须要的部份,假如还须要其他的中间件能够背面自行设置。

var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
    
var app = express();
    
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
    
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
    
module.exports = app;

下面我们来举行进一步的设置,将我们须要的中间件引入进来,并设置。

var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var session = require('express-session');
var mongoose = require('mongoose');
var seven = require('seven-express');
var router = express.Router();
var app = express();
    
// 衔接数据库
mongoose.connect('mongodb://localhost:27017/Test');
    
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
    
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
    
// 增加session中间件
app.use(session({
 secret: '12345',
 name: 'seven-test',
 cookie: {maxAge: 80000 },
 resave: false,
 saveUninitialized: true
}));
    
// 增加seven中间件
seven.creator(app, router, path.join(__dirname, 'schema'));
    
    
module.exports = app;

增加 schema

在项目目录下增加 schema 文件夹,然后在里面增加种种mongoose的schema文件。假如须要seven的权限治理功用,则默许须要增加 user 表,并增加 username , password , role 属性。

const mongoose = require('mongoose');
    
let User = new mongoose.Schema({
 // 用户名
 username: String,
 // 暗码
 password: String,
 // 用户身份
 role: String,
});
    
module.exports = User;

增加 seven 的设置文件

自定义设置能够参照背面的seven中间件的引见,这里给出样例。

{
  "rule": {
    "user" : {
      "Create": {
        "key": "username",
        "bodyList": ["username", "role"]
      },
      "Update": {
        "bodyList": ["username"]
      }
    }
  },
  "authority": {
    "role": ["admin", "user", "superadmin"],
    "filter": {
      "user": {
        "Create": false,
        "Retrieve": ["admin"],
        "Update": ["user", "admin", "superadmin"]
      }
    }
  }
}

Run

如今就能把全部项目run起来。

$ npm start

假如一般,会涌现

users
    Pagination get /user/page/:page
    Create post /user
    Delete delete /user/:id
    Update put /user/:id
    Login post /login
    Retrieve get /user/:id

这些就是关于 schema 自动映照获得的 Restful API,具有可设置的参数搜检功用,具有可设置的权限治理功用。

到如今我们没有写一行代码,就完成了全部 Restful API 的后端功用。

Seven-express

那我们究竟是怎样做到如许的自动化映照的呢?

好吧,主如果 seven-express 完成的从 Mongoose.schemaRestful API 的映照,并增加了其他的成熟功用模块,这也是我最近在冒死开辟的一个中间件(或许说是插件),如今已开源在github上,并宣布在npm中。

如今有比较细致的中文文档,项目地点: seven

由于我如今学业比较重,所以开辟速率不会迥殊快,然则我也会尽尽力去保护这个开源项目,迎接人人star运用。假如运用历程当中有任何问题,能够直接联络我,也能够直接着手保护,我会第一时间回应人人,也迎接人人对这类无后端形式提出珍贵的发起。

邮箱: 610347922@qq.com
    原文作者:77即是正义
    原文地址: https://segmentfault.com/a/1190000009164811
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞