资讯专栏INFORMATION COLUMN

5分钟构建一个Restful后端

BlackHole1 / 2439人阅读

摘要:现在就能把整个项目起来。到现在我们没有写一行代码,就实现了整个的后端功能。如果使用过程当中有任何问题,可以直接联系我,也可以直接动手维护,我会第一时间回应大家,也欢迎大家对这种无后端模式提出宝贵的建议。

原材料

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/82653.html

相关文章

  • Spring 指南(目录)

    摘要:指南无论你正在构建什么,这些指南都旨在让你尽快提高工作效率使用团队推荐的最新项目版本和技术。使用进行消息传递了解如何将用作消息代理。安全架构的主题指南,这些位如何组合以及它们如何与交互。使用的主题指南以及如何为应用程序创建容器镜像。 Spring 指南 无论你正在构建什么,这些指南都旨在让你尽快提高工作效率 — 使用Spring团队推荐的最新Spring项目版本和技术。 入门指南 这些...

    only_do 评论0 收藏0
  • 简单暴力!21 分钟学会 apollo-client + redux

    摘要:阅读过程中如果产生任何不适,请及时拨打自行抢救,谢谢。端选型总体还是比较前后端分离的,不强制你使用某一种方案。是官方出品和推荐的,也是默认的配套方案。事后来看,的坑不少。 apollo-client 是一个比较难用的 GraphQL 客户端,本系列带你集成 redux,趟平深坑,钻入原理,让你在 21 分钟内学完 apollo-client。 NOTE: 阅读过程中如果产生任何不适,请...

    rockswang 评论0 收藏0
  • 后端经验

    摘要:在结构上引入了头结点和尾节点,他们分别指向队列的头和尾,尝试获取锁入队服务教程在它提出十多年后的今天,已经成为最重要的应用技术之一。随着编程经验的日积月累,越来越感觉到了解虚拟机相关要领的重要性。 JVM 源码分析之 Jstat 工具原理完全解读 http://click.aliyun.com/m/8315/ JVM 源码分析之 Jstat 工具原理完全解读 http:...

    i_garfileo 评论0 收藏0
  • node技术栈 - 收藏集 - 掘金

    摘要:异步最佳实践避免回调地狱前端掘金本文涵盖了处理异步操作的一些工具和技术和异步函数。 Nodejs 连接各种数据库集合例子 - 后端 - 掘金Cassandra Module: cassandra-driver Installation ... 编写 Node.js Rest API 的 10 个最佳实践 - 前端 - 掘金全文共 6953 字,读完需 8 分钟,速读需 2 分钟。翻译自...

    王伟廷 评论0 收藏0
  • 后端API从入门到放弃指北

    摘要:菜鸟教程框架中文手册入门目标使用搭建通过对数据增删查改没了纯粹占行用的拜 后端API入门学习指北 了解一下一下概念. RESTful API标准] 所有的API都遵循[RESTful API标准]. 建议大家都简单了解一下HTTP协议和RESTful API相关资料. 阮一峰:理解RESTful架构 阮一峰:RESTful API 设计指南 RESTful API指南 依赖注入 D...

    Jeffrrey 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<