Open-Rest 开源项目教程
open-restStandard rest server, Base on restify and sequelize项目地址:https://gitcode.com/gh_mirrors/op/open-rest
1. 项目的目录结构及介绍
open-rest/
├── bin/
│ └── www # 项目的启动脚本
├── config/
│ ├── default.js # 默认配置文件
│ ├── development.js # 开发环境配置文件
│ └── production.js # 生产环境配置文件
├── lib/
│ ├── app.js # 应用主文件
│ └── ... # 其他库文件
├── node_modules/ # 依赖模块
├── public/ # 静态资源文件
├── routes/ # 路由文件
├── views/ # 视图文件
├── package.json # 项目依赖和脚本
└── README.md # 项目说明文档
目录结构介绍
bin/
: 包含项目的启动脚本。config/
: 包含项目的配置文件,包括默认配置和不同环境的配置。lib/
: 包含应用的主文件和其他库文件。node_modules/
: 包含项目依赖的模块。public/
: 包含静态资源文件,如图片、CSS 和 JavaScript 文件。routes/
: 包含路由文件,定义了应用的路由逻辑。views/
: 包含视图文件,用于渲染页面。package.json
: 包含项目的依赖和脚本。README.md
: 项目说明文档。
2. 项目的启动文件介绍
bin/www
#!/usr/bin/env node
/**
* 引入依赖
*/
const app = require('../lib/app');
const http = require('http');
/**
* 获取配置
*/
const config = require('../config');
/**
* 创建 HTTP 服务器
*/
const server = http.createServer(app);
/**
* 监听端口
*/
server.listen(config.port);
server.on('error', onError);
server.on('listening', onListening);
/**
* 错误处理
*/
function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}
const bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port;
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}
/**
* 监听事件
*/
function onListening() {
const addr = server.address();
const bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
console.log('Listening on ' + bind);
}
启动文件介绍
- 引入依赖:引入了应用主文件和 HTTP 模块。
- 获取配置:从配置文件中获取端口配置。
- 创建 HTTP 服务器:使用应用主文件创建 HTTP 服务器。
- 监听端口:服务器监听配置文件中指定的端口。
- 错误处理:处理常见的端口绑定错误。
- 监听事件:输出服务器监听的端口信息。
3. 项目的配置文件介绍
config/default.js
module.exports = {
port: process.env.PORT || 3000,
db: {
host: 'localhost',
user: 'root',
password: '',
database: 'open_rest'
}
};
config/development.js
module.exports = {
db: {
host: 'localhost',
user: 'dev_user',
password: 'dev_password',
database: 'open_rest_dev'
}
};
config/production.js
module.exports = {
db: {
host: 'production_host',
user: 'prod_user',
password: 'prod_password',
open-restStandard rest server, Base on restify and sequelize项目地址:https://gitcode.com/gh_mirrors/op/open-rest