expressjs 项目实践

## 架构:expressjs + express-jwt + sequelize + express-validate

## 数据库:mysql

## 实现功能:登录、验证码、鉴权、用户、上传、下载、错误统一处理

## api格式: restful + json

项目目录

app.js

// var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var session = require("express-session");

var expressJwt = require('express-jwt');

var indexRouter = require('./routes/index');
var userRouter = require('./routes/user');
var uploadRouter = require('./routes/upload');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/public',express.static('public'));

app.use(expressJwt({
  secret: 'secret12345',  // 签名的密钥 或 PublicKey
  algorithms: ['HS256'],
}).unless({
  path: ['/api/user/login', '/api/user/captcha'] // 指定路径不经过 Token 解析
}))

app.use(session({
  secret: 'keyboard cat',
  resave: true,
  saveUninitialized: true
}))

app.use('/', indexRouter);
app.use('/api/user', userRouter);
app.use('/api/upload', uploadRouter);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  console.log(res.status)
  res.json({
    msg: 'Not Found',
    status: 404,
    data: {}
  })
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  res.json({
    msg: err.message,
    status: err.status || 500,
    data: {}
  })
});

module.exports = app;

model->role.js

var db = require('../utils/db');
var {DataTypes} = require('sequelize');

var Role = db.define('role', {
    id: {
        type: DataTypes.INTEGER,
        allowNull: false,
        primaryKey: true, 
        autoIncrement: true
    },
    name: {
 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值