成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

5分鐘構(gòu)建一個(gè)Restful后端

BlackHole1 / 2482人閱讀

摘要:現(xiàn)在就能把整個(gè)項(xiàng)目起來(lái)。到現(xiàn)在我們沒(méi)有寫一行代碼,就實(shí)現(xiàn)了整個(gè)的后端功能。如果使用過(guò)程當(dāng)中有任何問(wèn)題,可以直接聯(lián)系我,也可以直接動(dòng)手維護(hù),我會(huì)第一時(shí)間回應(yīng)大家,也歡迎大家對(duì)這種無(wú)后端模式提出寶貴的建議。

原材料

express

mongoose

seven-express

express-session

Start

使用npm安裝 express腳手架

$ npm install -g --save express express-generator

初始化項(xiàng)目

默認(rèn)是使用Jade模版,可以使用--view== 來(lái)指明其他的模版.
$ express seven-test
$ cd seven-test
$ npm install
$ npm install mongoose seven-express express-session

Configure 進(jìn)行 app.js 配置

默認(rèn)的配置比較繁瑣,我們先來(lái)精簡(jiǎn)一下配置文件,只留下我們需要的部分,如果還需要其他的中間件可以后面自行配置。

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;

下面我們來(lái)進(jìn)行進(jìn)一步的配置,將我們需要的中間件引入進(jìn)來(lái),并配置。

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();
    
// 連接數(shù)據(jù)庫(kù)
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

在項(xiàng)目目錄下添加 schema 文件夾,然后在里面添加各種mongoose的schema文件。如果需要seven的權(quán)限管理功能,則默認(rèn)需要添加 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

現(xiàn)在就能把整個(gè)項(xiàng)目run起來(lái)。

$ npm start

如果正常,會(huì)出現(xiàn)

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

這些就是對(duì)于 schema 自動(dòng)映射得到的 Restful API,具有可配置的參數(shù)檢查功能,具有可配置的權(quán)限管理功能。

到現(xiàn)在我們沒(méi)有寫一行代碼,就實(shí)現(xiàn)了整個(gè) Restful API 的后端功能。

Seven-express

那我們到底是如何做到這樣的自動(dòng)化映射的呢?

好吧,主要是 seven-express 實(shí)現(xiàn)的從 Mongoose.schemaRestful API 的映射,并添加了其他的成熟功能模塊,這也是我最近在拼命開(kāi)發(fā)的一個(gè)中間件(或者說(shuō)是插件),現(xiàn)在已經(jīng)開(kāi)源在github上,并發(fā)布在npm中。

現(xiàn)在有比較詳細(xì)的中文文檔,項(xiàng)目地址: seven

因?yàn)槲椰F(xiàn)在學(xué)業(yè)比較重,所以開(kāi)發(fā)速度不會(huì)特別快,但是我也會(huì)盡全力去維護(hù)這個(gè)開(kāi)源項(xiàng)目,歡迎大家star使用。如果使用過(guò)程當(dāng)中有任何問(wèn)題,可以直接聯(lián)系我,也可以直接動(dòng)手維護(hù),我會(huì)第一時(shí)間回應(yīng)大家,也歡迎大家對(duì)這種無(wú)后端模式提出寶貴的建議。

郵箱: [email protected]

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/82653.html

相關(guān)文章

  • Spring 指南(目錄)

    摘要:指南無(wú)論你正在構(gòu)建什么,這些指南都旨在讓你盡快提高工作效率使用團(tuán)隊(duì)推薦的最新項(xiàng)目版本和技術(shù)。使用進(jìn)行消息傳遞了解如何將用作消息代理。安全架構(gòu)的主題指南,這些位如何組合以及它們?nèi)绾闻c交互。使用的主題指南以及如何為應(yīng)用程序創(chuàng)建容器鏡像。 Spring 指南 無(wú)論你正在構(gòu)建什么,這些指南都旨在讓你盡快提高工作效率 — 使用Spring團(tuán)隊(duì)推薦的最新Spring項(xiàng)目版本和技術(shù)。 入門指南 這些...

    only_do 評(píng)論0 收藏0
  • 簡(jiǎn)單暴力!21 分鐘學(xué)會(huì) apollo-client + redux

    摘要:閱讀過(guò)程中如果產(chǎn)生任何不適,請(qǐng)及時(shí)撥打自行搶救,謝謝。端選型總體還是比較前后端分離的,不強(qiáng)制你使用某一種方案。是官方出品和推薦的,也是默認(rèn)的配套方案。事后來(lái)看,的坑不少。 apollo-client 是一個(gè)比較難用的 GraphQL 客戶端,本系列帶你集成 redux,趟平深坑,鉆入原理,讓你在 21 分鐘內(nèi)學(xué)完 apollo-client。 NOTE: 閱讀過(guò)程中如果產(chǎn)生任何不適,請(qǐng)...

    rockswang 評(píng)論0 收藏0
  • 后端經(jīng)驗(yàn)

    摘要:在結(jié)構(gòu)上引入了頭結(jié)點(diǎn)和尾節(jié)點(diǎn),他們分別指向隊(duì)列的頭和尾,嘗試獲取鎖入隊(duì)服務(wù)教程在它提出十多年后的今天,已經(jīng)成為最重要的應(yīng)用技術(shù)之一。隨著編程經(jīng)驗(yàn)的日積月累,越來(lái)越感覺(jué)到了解虛擬機(jī)相關(guān)要領(lǐng)的重要性。 JVM 源碼分析之 Jstat 工具原理完全解讀 http://click.aliyun.com/m/8315/ JVM 源碼分析之 Jstat 工具原理完全解讀 http:...

    i_garfileo 評(píng)論0 收藏0
  • node技術(shù)棧 - 收藏集 - 掘金

    摘要:異步最佳實(shí)踐避免回調(diào)地獄前端掘金本文涵蓋了處理異步操作的一些工具和技術(shù)和異步函數(shù)。 Nodejs 連接各種數(shù)據(jù)庫(kù)集合例子 - 后端 - 掘金Cassandra Module: cassandra-driver Installation ... 編寫 Node.js Rest API 的 10 個(gè)最佳實(shí)踐 - 前端 - 掘金全文共 6953 字,讀完需 8 分鐘,速讀需 2 分鐘。翻譯自...

    王偉廷 評(píng)論0 收藏0
  • 后端API從入門到放棄指北

    摘要:菜鳥(niǎo)教程框架中文手冊(cè)入門目標(biāo)使用搭建通過(guò)對(duì)數(shù)據(jù)增刪查改沒(méi)了純粹占行用的拜 后端API入門學(xué)習(xí)指北 了解一下一下概念. RESTful API標(biāo)準(zhǔn)] 所有的API都遵循[RESTful API標(biāo)準(zhǔn)]. 建議大家都簡(jiǎn)單了解一下HTTP協(xié)議和RESTful API相關(guān)資料. 阮一峰:理解RESTful架構(gòu) 阮一峰:RESTful API 設(shè)計(jì)指南 RESTful API指南 依賴注入 D...

    Jeffrrey 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<