技术栈:express-generator + sequelize + apidoc

一、创建应用骨架:

express官网

1. 创建文件夹,名称为:express
2. cd到express文件夹,运行Express应用程序生成器

npx express-generator

3. 安装依赖包

npm install

4. 启动应用

set DEBUG=express:* & npm start

或者

npm start

5. 查看应用

浏览器打开:localhost:3000

二、安装常用插件

1. nodemon,热更新
修改package.json启动命令,采用nodemon启动项目

"scripts": {"start": "nodemon ./bin/www"
},

2. 数据库

  • 电脑安装mysql
    运行mysql,并使用navicat连接

参考地址

  • 数据库依赖
    sequelize:一个基于 promise 的 Node.js ORM, 目前支持 Postgres, MySQL, MariaDB, SQLite 以及 Microsoft SQL Server. 它具有强大的事务支持, 关联关系, 预读和延迟加载,读取复制等功能。
    sequelize官网
    mysql2
  • 连接数据库
    根目录下新建db.js
const Sequelize = require('sequelize')const sequelize = new Sequelize(数据库名称, 数据库账户, 数据库密码, {host: 'localhost',port: '3306',dialect: 'mysql',define: {// 全局禁用时间戳,不然数据表里需要创建时间戳列;或者每次创建表时单独禁用或创建时间戳列。否则会报错。timestamps: false}
})sequelize.authenticate().then(() => {console.log('database connection has been established successfully.')
}).catch(err => {console.log('unable to connect to the database', err)
})module.exports = sequelize

根目录下新建models文件夹,然后在models文件夹下新建user.js文件

const Sequelize = require('sequelize')
const sequelize = require('../db')
const db = require('../db')// 模型定义
const User = db.define('User', {id: {type: Sequelize.INTEGER(11),primaryKey: true},username: {type: Sequelize.STRING(0)},password: {type: Sequelize.STRING(12)}
})// 模型同步
// 立即执行函数如果报错,加上分号再试
; (async () => {// User.sync() - 如果表不存在,则创建该表(如果已经存在,则不执行任何操作)await User.sync()
})();module.exports = User

修改routes文件夹下的user.js文件

var express = require('express');
var router = express.Router();const User = require('../models/user')/**
@api {get} /user/:id Request User information*
@apiName GetUser*
@apiGroup User** @apiParam {Number} id Users unique ID.** @apiSuccess {String} firstname Firstname of the User.* @apiSuccess {String} lastname  Lastname of the User.** @apiSuccessExample Success-Response:*     HTTP/1.1 200 OK*     {*       "firstname": "John",*       "lastname": "Doe"*     }** @apiError UserNotFound The
id of the User was not found.** @apiErrorExample Error-Response:*     HTTP/1.1 404 Not Found*     {*       "error": "UserNotFound"*     }*//* GET users listing. */
router.get('/', async function(req, res, next) {const data = await User.findAll()res.send({data});
});router.get('/add', async function(req, res, next) {const oldData = await User.findAll()const len = oldData.lengthconst user = await User.create({id: len,username: `user_${len}`,password: `password_${len}`})const data = await User.findAll()res.send({data});
});module.exports = router;

3. 接口文档
apidoc
apidoc官网
项目根目录下添加apidoc.json文件,这个文件主要包含一些项目的描述信息,例如标题、介绍、版本等。

{"name": "example","version": "0.1.0","description": "apiDoc basic example","title": "Custom apiDoc browser title","url": "https://api.github.com/v1"
}

在代码注释里加入apidoc的注解。apidoc不在乎把注释写在哪里,不过还是推荐写在接口所在位置。
上一步:修改routes文件夹下的user.js文件,已加入注释代码。

/**
@api {get} /user/:id Request User information*
@apiName GetUser*
@apiGroup User** @apiParam {Number} id Users unique ID.** @apiSuccess {String} firstname Firstname of the User.* @apiSuccess {String} lastname  Lastname of the User.** @apiSuccessExample Success-Response:*     HTTP/1.1 200 OK*     {*       "firstname": "John",*       "lastname": "Doe"*     }** @apiError UserNotFound The
id of the User was not found.** @apiErrorExample Error-Response:*     HTTP/1.1 404 Not Found*     {*       "error": "UserNotFound"*     }*/

常用的一些注解如下:
apidoc仅解析含有@api或者@apiDefine的注释块。
@apiDefine一个注释块中仅能有一个,@apiDefine可以定义一些通用的内容,比如通用的请求参数,返回值,错误列表等 。
@api 用来定义一个api,需要注意的是,@apiGroup和@apiName是必须的,@apiGroup定义的是左侧导航,@apiName 会拼接到访问路径中。@apiGroup不支持中文,需要和@apiDefine配合使用。

@api 定义API的请求方法、路径和名字
@apiDescription 定义API的描述
@apiGroup 定义API的分组
@apiParam 定义API的参数
@apiParamExample 参数请求的事例
@apiVersion 版本
@apiErrorExample API错误示例
@apiSuccessExample API正常示例

项目根目录下执行:

apidoc -i ./ -o apidoc
  • i 是输入源, -i ./ 表示 要生成apidoc接口文档的项目目录就是当前目录
  • o 是输出 ,-o apidoc 表示当前目录下apidoc 是接口文档的输出目录
    输入输出目录 根据自己需求更改。
    生成的apidoc目录下,包含了所有接口注释信息,浏览器打开文件夹下index.html,即可看见接口文档。

node + express + sequelize + apidoc 后台初始化相关推荐

  1. node+express+mysql开发后台接口

    技术栈:node.express.mysql.postman(接口调试软件).sequelize(数据库映射模型).sequelize-auto(自动生成数据库映射模型).apidoc(注释语法生成 ...

  2. node + express + mysql 搭建后台

    基础配置 入口文件app.js var express = require('express'); var app = express(); var bodyParser = require('bod ...

  3. Node+express+mysql实现后台服务接口

    一.准备工作 创建代码目录,依次执行以下操作 1.(若没有安装过)安装node 2.npm init(package.json) 3.安装express(请求)npm install express ...

  4. php sequelize,node,express_sequelize 联合查询,node,express,mysql,sequelize - phpStudy

    sequelize 联合查询 我用sequelize 联合查询 db.user.hasMany(db.bbsuser,{foreignKey:'userId'}); db.bbsuser.belong ...

  5. 【node】Sequelize常用操作、基本增删改查

    [node]Sequelize常用操作.基本增删改查 sequelize初始化 先初始化一个数据库实例 再初始化一个model实例 sequelize的数据类型 基本增删改查的写法 SELECT * ...

  6. mysql第五章项目二_Todo List:Node+Express 搭建服务端毗邻Mysql – 第五章(第1节)

    点击右上方红色按钮关注"web秀",让你真正秀起来 前言 万丈高楼平地起,我们的Todo List项目也是越来越结实了.Todo List的前面4章内容都是在为Client端开发, ...

  7. 【HAVENT原创】Node Express API 通用配置

    为什么80%的码农都做不了架构师?>>>    ( 基于 Express 4.x ) 启动文件 /app.js: var express = require('express'); ...

  8. node+express创建第一个node项目

    一.安装nodejs 1.到官网下载nodejs安装包 中文官网地址:http://nodejs.cn/ 英文官网地址:https://nodejs.org/en/ 根据自己的系统和版本,选择下载对应 ...

  9. 微信扫码关注登录(vue+node+express+mongodb)

    微信扫码关注登录(vue+node+express+mongodb) 文章目录 前言 一.微信扫码关注登录是什么? 二.为什么要使用微信扫码关注登录? 三.思路 前端部分 后端部分: 四.微信后台 授 ...

最新文章

  1. Mac原生Terminal快速登录ssh
  2. 24张GIF图,让你秒懂非标自动化机构的原理
  3. linux shell 脚本 获取当前函数名
  4. mysql调试事件_mysql日志管理分析调试实例_mysql
  5. 事件响应的优先级、stopProgapation禁止下层组件响应
  6. 026_JavaScript数组排序
  7. QT:常用函数详解--常用操作记录(个人笔记)
  8. 系统登录界面的验证码
  9. 威纶通触摸屏与仪表通讯_西门子S7-200PLC与威纶通HMI的通信案例
  10. 华为怎么安装服务器系统版本,服务器怎么安装操作系统版本
  11. c language compile process.
  12. 测试http请求的Chrome插件:Postman插件的查找安装模拟测试 - 讲解篇
  13. java 输出定位代码行_指定一个.java文件,输出其代码行数
  14. UAC在注册表中的对应位置
  15. Java中String, StringBuilder和StringBuffer
  16. 新手在前期应该怎样发“外链”(4)之终级外链法
  17. t’触发器真值表和状态方程_T触发器的特性表.ppt
  18. linux定时启动python脚本,linux定时执行python脚本
  19. 服务器数据抓包(原来微信图片真的可以抓包看的)
  20. 算法设计与分析—分支限界法应用(头歌实验)

热门文章

  1. idea中构造方法快捷键
  2. vue全家桶是指什么?有哪些东西?
  3. 头条后台开发面试题分析
  4. LeetCode:206. 反转链表
  5. 【微信小程序】云开发环境的搭建
  6. 爬取猫眼电影网前100的电影排名
  7. python进入小学课堂_一统AI界的当红炸子鸡Python,这次要进入小学生课堂了!
  8. 软件生存周期过程及其模型
  9. rollup-plugin-uglify | 解决报错TypeError: uglify is not a function
  10. 一名 vueCoder 总结的 React 基础