初始化目录:
安装 Express:
| npm install express --save |
HelloWorld:
创建app.js
| |
| const express = require('express') |
| |
| const app = express() |
| |
| app.get('/',(req, res)=>res.send('hello world')) |
| |
| app.listen(3000, ()=>console.log('Example app listening on port 3000!')) |
快速创建应用的骨架-Express 应用程序生成器
全局安装生成器(express-generator)
| npm install express-generator -g |
使用生成器创建项目
| express --view=pug service-manage |
安装依赖
| cd service-manage |
| npm install |
启动应用
| //MacOS/Linux 默认监听3000端口 |
| DEBUG=service-manage:* npm start |
| //Windows 默认监听3000端口 |
| set DEBUG=service-manage:* & npm start |
路由基本配置
1. 路由文件routes->tools.js
| var express = require('express') |
| |
| var router = express.Router(); |
| |
| |
| router.get('/',function (req, res ,next) { |
| res.send('Welcome to visit tools... ') |
| }) |
| |
| router.post('/', function (req, res) { |
| res.send('Got a POST request') |
| }) |
| |
| router.put('/user', function (req, res) { |
| res.send('Got a PUT request at /user') |
| }) |
| |
| router.delete('/user', function (req, res) { |
| res.send('Got a DELETE request at /user') |
| }) |
| |
| module.exports = router |
2. app.js配置新路由文件
| |
| var toolsRouter = require('./routes/tools'); |
| |
| app.use('/tools', toolsRouter) |
路由配置
router.all() 对路由规则相同路由进行预处理
| router.all('/', function (req, res, next) { |
| console.log('Accessing the secret section ...') |
| next() |
| }) |
请求参数
配置
| router.get('/users/:userId/books/:bookId',function (req, res ,next) { |
| res.send(req.params) |
| }) |
Test
| Route path: /users/:userId/books/:bookId |
| Request URL: http://localhost:3000/users/34/books/8989 |
| req.params: { "userId": "34", "bookId": "8989" } |
后台开发必做之Swagger配置
一、安装:
| npm i express-swagger-generator --save-dev |
二、基本配置
| const express = require('express'); |
| const app = express(); |
| const expressSwagger = require('express-swagger-generator')(app); |
| |
| let options = { |
| swaggerDefinition: { |
| info: { |
| description: 'This is a sample server', |
| title: 'Swagger', |
| version: '1.0.0', |
| }, |
| host: 'localhost:3000', |
| basePath: '/v1', |
| produces: [ |
| "application/json", |
| "application/xml" |
| ], |
| schemes: ['http', 'https'], |
| securityDefinitions: { |
| JWT: { |
| type: 'apiKey', |
| in: 'header', |
| name: 'Authorization', |
| description: "", |
| } |
| } |
| }, |
| basedir: __dirname, |
| files: ['./routes/**/*.js'] |
| }; |
| expressSwagger(options) |
| app.listen(3000); |
三、查看预览
| http://localhost:3000/api-docs/api-docs |
四、swagger.io
| http://editor.swagger.io/ |
后台开发必做之Swagger配置2
安装:
| npm install swagger-jsdoc swagger-ui-express --save |
项目目录新增config.js
| |
| exports.swaggerConfig = { |
| openapi: '3.0.0', |
| title: 'Node Service API', |
| version: '1.0.0', |
| apis: ['./routes/*.js'], |
| routerPath: '/api-docs' |
| } |
项目目录新增\swagger\index.js\
| var swaggerUi = require('swagger-ui-express'); |
| var swaggerJSDoc = require('swagger-jsdoc'); |
| var config = require('../config') |
| |
| exports.setSwagger = function (app) { |
| const options = { |
| definition: { |
| openapi: config.swaggerConfig.openapi, |
| info: { |
| title: config.swaggerConfig.title, |
| version: config.swaggerConfig.version |
| } |
| }, |
| apis: config.swaggerConfig.apis |
| } |
| |
| const swaggerSpec = swaggerJSDoc(options) |
| |
| app.get('/api-docs.json', (req, res) => { |
| res.setHeader('Content-Type', 'application/json') |
| res.send(swaggerSpec) |
| }) |
| app.use(config.swaggerConfig.routerPath, swaggerUi.serve, swaggerUi.setup(swaggerSpec)) |
| } |
app.js配置
| var swaggerConfig = require('./swagger') |
| ... |
| var app = express() |
| ... |
| swaggerConfig.setSwagger(app) |
PM2使用
安装:
启动:
其他:
| pm2 list |
| |
| pm2 stop 0 |
| |
| pm2 restart 0 |
| |
| pm2 show 0 |
| |
| pm2 delete 0 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)