下面是关于Node.js的Express服务器基本使用教程的完整攻略:
什么是Express?
Express是一个流行的基于Node.js的Web应用程序框架,它为Web应用程序提供了一个基本的架构,以便将其构建为可扩展的应用程序。Express在Web开发人员中很流行,因为它提供了简单的API来处理HTTP请求和响应,这些API很容易学习和使用。Express还提供了许多中间件,这些中间件可以使Web应用程序的构建更加容易。
快速入门
下面是一个简单的Express应用程序的示例,它会监听3000端口,并在收到请求时发送“hello world”:
const express = require('express');
const app = express();
app.get('/', function(req, res) {
res.send('hello world');
});
app.listen(3000, function() {
console.log('Example app listening on port 3000!');
});
在以上代码中,我们首先把“express”模块引入,然后创建一个应用程序实例。接着,定义一个针对根路径的GET请求,该请求会发送“hello world”作为响应。最后,我们调用listen()函数来指定应用程序监听的端口。
基本路由
路由用于定义应用程序的端点(URL),以及如何响应客户端请求。以下示例展示了如何为不同的路径定义路由:
// GET method route
app.get('/', function(req, res) {
res.send('get request to homepage');
});
// POST method route
app.post('/', function(req, res) {
res.send('post request to homepage');
});
// route parameters
app.get('/users/:userId/books/:bookId', function(req, res) {
res.send(`UserId is ${req.params.userId} and BookId is ${req.params.bookId}`);
});
在以上代码中,我们定义了三个路由。第一个路由用于GET请求,第二个路由用于POST请求。URL参数是通过在URL中定义冒号(:)后面跟一个名称来定义的。例如,/users/:userId/books/:bookId中的userId和bookId都是参数。
静态文件
您可以使用Express来提供静态文件,例如图像,CSS文件和JavaScript文件。下面是一个将public文件夹设置为Express静态目录的示例。在public目录中放置的文件可以直接访问,而无需对文件进行路由:
app.use(express.static('public'))
在以上例子中,app.use()函数注册了一个中间件函数,它将“public”文件夹作为静态文件目录提供。现在,在浏览器中访问/public/images/kitten.jpg将会返回该图像。
错误处理
在Express中,我们可以通过注册错误处理中间件来处理程序中的错误。以下示例展示了如何在Express中处理错误:
app.use(function(req, res, next) {
res.status(404).send("Sorry can't find that!")
});
app.use(function(err, req, res, next) {
console.error(err.stack);
res.status(500).send('Something broke!');
});
在以上代码中,我们定义了两个中间件来处理错误。第一个中间件定义了404错误处理,如果用户试图访问不存在的页面,将返回相应信息。第二个中间件定义了500错误处理,如果应用程序中的其他中间件出现异常,则会将异常信息打印到控制台并发送500响应。
示例1: 用户登录
下面是一个简单的用户登录示例:
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.urlencoded({ extended: true }));
app.get('/login', function(req, res) {
res.sendFile(__dirname + '/index.html');
});
app.post('/login', function(req, res) {
if (req.body.email == 'test@example.com' && req.body.password == 'password') {
res.send('Welcome, ' + req.body.email + '!');
} else {
res.send('Invalid email or password.');
}
});
app.listen(3000, function() {
console.log('Example app listening on port 3000!');
});
在以上代码中,我们首先引入了body-parser模块以便解析POST请求中的数据。然后,在/login路径中定义GET请求处理函数,它返回一个HTML表单用于用户输入电子邮件和密码。POST路由处理函数检查用户提供的电子邮件和密码是否正确,并作出相应响应。
示例2: 基于数据库的应用程序
下面是一个基于MongoDB数据库的示例:
const express = require('express');
const bodyParser = require('body-parser');
const MongoClient = require('mongodb').MongoClient;
const app = express();
app.use(bodyParser.urlencoded({ extended: true }));
let db;
MongoClient.connect('mongodb://localhost:27017/myproject', function(err, client) {
if (err) throw err;
db = client.db('myproject');
app.listen(3000, function() {
console.log('Example app listening on port 3000!');
});
});
app.get('/users', function(req, res) {
db.collection('users').find().toArray(function(err, result) {
if (err) throw err;
res.send(result);
});
});
app.post('/users', function(req, res) {
db.collection('users').insertOne(req.body, function(err, result) {
if (err) throw err;
res.send('User added successfully!');
});
});
在以上代码中,我们引入了body-parser中间件,mongodb客户端和express模块。然后,在MongoDB中创建myproject数据库,然后通过连接字符串连接到MongoDB服务器。在启动服务器之后,我们可以连接到该数据库并在用户的请求中读取/写入数据。'/users'路由处理函数查询MongoDB中的所有用户,并将它们发送回客户端,POST路由处理函数将包含在POST请求主体中的用户添加到MongoDB中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:node.js的Express服务器基本使用教程 - Python技术站