内容简介:基于 Node.js 平台,快速、开放、极简的 Web 开发框架。Express的特点是易于入门,而且可以使用各种中间件扩展它的功能。但由于Express开发相对较早,主要使用回调函数进行异步操作,无法使用Async函数,因此原团队也开发了功能更强大的Koa来解决Express的不足之处。
基于 Node.js 平台,快速、开放、极简的 Web 开发框架。
Express的特点是易于入门,而且可以使用各种中间件扩展它的功能。
但由于Express开发相对较早,主要使用回调函数进行异步操作,无法使用Async函数,因此原团队也开发了功能更强大的Koa来解决Express的不足之处。
不过对于开发人员,Express还是不可或缺的一项重要技能。
使用Express创建服务器
示例代码:/lesson01/server.js
-
在
/lesson01文件夹通过npm init -y初始化项目 -
使用
npm install express --save安装Express - 引用Express并创建服务器
const express = require('express')
const server = express()
server.listen(8080)
console.log(`Server started at 8080`)
复制代码
常用路由配置方法
示例代码:/lesson01/server.js
通常接收到的请求不止get方法,常用的有:
server.get server.post server.use
server.use('/first', (req, res, next) => {
console.log('first')
next()
})
复制代码
除了这3个方法之外,还有server.put、server.delete等方法,具体可以查看文档
添加路由
示例代码:/lesson01/server.js
Express自带了路由功能,不需要引用中间件即可添加路由。
server.get('/first', (req, res, next) => {
res.send({
error: 0,
msg: '请求成功'
})
})
复制代码
代码含义如下:
- 创建了一个get请求的路由。
- 第一个参数'/first'表示请求的路由名称。
- 第二个参数为回调函数。
- 回调函数传参req表示请求参数实例。
- 回调函数传参res表示响应参数实例。
- next用于触发下一步操作。
- res.send可以向前台发送数据,与原生node.js的res.write方法不同,它不止可以发送Buffer、字符串,还可以直接发送JSON等数据,如下:
res.send(new Buffer('wahoo'));
res.send({ some: 'json' });
res.send('<p>some html</p>');
res.send(404, 'Sorry, cant find that');
res.send(404);
复制代码
此时访问 http://localhost:8080/first
,即可看到页面显示: {"error":0,"msg":"请求成功"}
。
next方法的使用
示例代码:/lesson01/server.js
next方法的作用是用于对请求的多级处理,例如:
server.get('/second', (req, res, next) => {
if (Number(req.query.num) > 10) {
// 满足条件时,才可触发同名的下一个路由。
next()
} else {
res.send({
error: 1,
msg: '请输入大于10的数字'
})
}
})
server.get('/second', (req, res, next) => {
res.send({
error: 0,
msg: '输入成功'
})
})
复制代码
代码含义如下:
- 若配置了多个同名路由,代码会从上到下按顺序执行,但如果未调用next方法,执行过程会中断。
- 如果接口传参为 http://localhost:8080/second?num=8 ,无法满足num > 10的条件,则不会执行第二个/second路由回调函数中代码,直接返回错误。
- 如果接口传参为 http://localhost:8080/second?num=80 ,满足了num > 10的条件,则可以执行第二个/second路由回调函数中代码,进行下一步处理。
- next方法在处理中间件时十分有用,因为在各级中间件的处理中,可以通过next方法判断是否需要执行下一级处理,
next方法传参
示例代码:/lesson01/server.js
有时会需要给下一级的处理传参,只要直接给req实例中添加属性即可,但请注意不要覆盖系统默认属性,如下:
server.get('/second', (req, res, next) => {
if (Number(req.query.num) > 10) {
// 满足条件时,才可触发同名的下一个路由。
req.randomNum = Math.floor(Math.random() * 100)
next()
} else {
res.send({
error: 1,
msg: '请输入大于10的数字'
})
}
})
server.get('/second', (req, res, next) => {
res.send({
error: 0,
msg: `输入成功,接收到的随机数为${req.randomNum}`
})
})
复制代码
访问 http://localhost:8080/second?num=80 即可看到前台打印出的req.randomNum结果。
以上所述就是小编给大家介绍的《Express教程01:创建服务器、配置路由》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- php – Laravel:如何使用尾部斜杠创建路由路由返回URL?
- 【CuteJavaScript】Angular6入门项目(1.构建项目和创建路由)
- React Router v4教程:为你的 React 应用创建路由
- 品尝阿里云容器服务:用nginx镜像创建容器,体验基于域名的路由机制
- vue路由篇(动态路由、路由嵌套)
- 小程序封装路由文件和路由方法,5种路由方法全解析
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Chinese Authoritarianism in the Information Age
Routledge / 2018-2-13 / GBP 115.00
This book examines information and public opinion control by the authoritarian state in response to popular access to information and upgraded political communication channels among the citizens in co......一起来看看 《Chinese Authoritarianism in the Information Age》 这本书的介绍吧!