express基于nodejs的web开发框架 - 简单使用

Express 是基于 Node.js 平台,快速、开放、极简的 Web 开发框架。搭建web服务器

Express 的本质:就是一个 npm 上的第三方包,提供了快速创建 Web 服务器的便捷方法。

使用Express开发框架可以非常方便、快速的创建Web网站的服务器或API接口的服务器

官网Express - 基于 Node.js 平台的 web 应用开发框架 - Express 中文文档 | Express 中文网

使用步骤:

  1. 导入包

  2. 创建服务器

  3. 处理请求

  4. 监听端口

代码:

//第一步: 导入express
const express = require('express');
// console.log(express); // 输出为一个函数

//第二步:创建服务器 :只需要调用express 函数就可以啦
let server = express();

// 第三步:监听端口
server.listen(1111, () => {
    console.log('服务器已经开启,运行在 http://localhost:1111');
})

// 第四步:对请求做出响应
// 使用server 服务器处理get 根请求
server.get('/', (req, res) => {
    res.end('ok')
})

路由方法:

请求方法还支持:

get - 查询请求 - 条件在地址栏

post - 新增请求 - 数据在请求主体

put - 修改请求 - 条件在地址栏 - 数据在请求主体

delete - 删除请求 - 条件在地址栏

各个动词方法用来处理对应的请求。不过有一个方法除外:

app.all() // 可以用来处理任意请求方式

虽然all方法可以处理任意请求,但是尽量少用,甚至尽量不要使用。

使用postman进行调试

路由路径:

完全匹配:

//  get 获取信息请求
app.get('/', (req, res) => {
    res.end('get')
})

// post 提交信息请求
app.post('/index', (req, res) => {
    res.end('post')
})

// put 编辑信息请求 - 用的不多
app.put('/info', (req, res) => {
    res.end('put')
})

// delete 删除信息请求 - 用得不多
app.delete('/del', (req, res) => {
    res.send('del')
})

不完全匹配:

// ? 代表匹配前面的字母出现 0 或 1 次    abcd / acd
app.get('/ab?cd', (req, res) => {
    res.end('ok')
})

// + 代表匹配前面的字母出现 1 或 n 次    abcd / abbbcd
app.get('/ab+cd', (req, res) => {
    res.end('ok')
})

// * 代表匹配*这里可以出现任意个字母    abcd / abeecd
app.get('/ab*cd', (req, res) => {
    res.end('ok')
})

// () 代表是一组    cd / abcd
app.get('/(ab)?cd', (req, res) => {
    res.end('ok')
})

正则匹配:

// 匹配任何路径中含有 a 的路径:
app.get(/a/, function(req, res) {
  res.send('/a/');
});

// 正则表达式 匹配以/api开头的路径  
app.get(/^\/api/, (req, res) => {
    res.end('api')
})

restful风格

// 对于页面请求路径为 http://localhost:3000/index/100 的路径时,接口对应地址可以是'/index/:id'
// id 就是请求路径对应的参数
 app.get('/index/:id', (req, res) => {
     res.end('success')
 })

restful风格约束:

路由中不能出现动词,即:get/post/put/delete

路由结尾不能有/

使用-来替换_

建议使用小写字母

使用复数形式

推荐标准状态码:

  1. 200 ok 服务器返回用户请求的数据

  2. 201 created 新建或修改操作成功

  3. 204 not content 删除数据成功

  4. 400 bad request 用户发出的请求有问题

  5. 401 unauthoried 表示用户没有认证,无法进行操作

  6. 403 forbidden 用户访问是被禁止的

  7. 422 unprocesable entity 当创建一个对象时,发生一个验证错误

  8. 500 internal server error 服务器内部错误,用户将无法判断发出的请求是否成功

  9. 503 service unavailable 服务不可用装填,多半是因为服务器问题,例:cpu占用率大...

路由的多次处理

多次处理:这就是中间件

// app 是创建的服务器名称

app.get('/', (req, res, next) => {
    // req 请求报文
    // res 响应报文
    // next 放行,该函数中暂时不处理响应,交给下一个函数进行处理.
    console.log('1');
    next()
}, (req, res) => {
    console.log('2');
    res.end('success')
})  

也可以将多个回调函数放在一个数组里处理路由:

server.get('/', [
    function (req, res, next) {
        console.log('1');
        next()
    },
    function (req, res, next) {
        console.log('2');
        next()
    },],
    function (req, res, next) {
        console.log('3');
        res.end('success')
    })

响应方法

const express = require('express')
const app = express()
app.listen(3000, () => {
    console.log('服务器启动了');
})

// 处理请求
app.get('/', (req, res) => {
    res.send('这是根请求')
})

// 响应方式
app.get('/list', (req, res) => {
    // 1. end 中文乱码
    res.end('响应成功')

    // 2. send 解决中文乱码 等价于 res.end(res.setHeader('content=type','text/html;charset=utf-8'))
    res.send('响应成功')

    // 3. 响应 json 格式数据
    res.json({
        code: 200,
        msg: '请求成功',
        data: []
    })

    // 4. redirect 重定向到其他请求
    res.redirect('/')

    // 5. sendFile(文件路径) 发送一个文件给前端 - 必须是绝对路径
    // __dirname是nodejs内置的跟踪根路径
    // 使用 path.join 拼接文件名和跟路径 - 组成绝对路径
    res.sendFile(require('path').join(__dirname, 'index.html'))

    // 6. sendStatus 设置响应状态码
    res.sendStatus(404)
})

静态资源托管

express提供了一个非常好用的方法,叫做 express.static(项目目录),通过此方法,可以非常方便地创建一个静态web资源服务器:

app.use(express.static('public'))
// app.use()表示使用(中间件)
// 现在可以访问public目录下所有的文件 
// 如public/aa.jpg文件,则可以通过 : http://xxxx/images/aa.jpg

express还支持给静态资源文件创建一个虚拟的文件前缀(实际上文件系统中并不存在),可以使用 express.static 函数指定一个虚拟的静态目录,就像下面这样:

前缀的使用意义:

  • 可以迷惑别人,一定程度上阻止别人猜测我们服务器的目录结构

  • 可以帮助我们更好的组织和管理静态资源

语法:app.use('/static', express.static('public'))

注:前缀前面的“/”必须要加,否则就错。

基于Node.jsExpress框架的项目是一个后端开发项目。Node.js是一个构建快速、可扩展的网络应用程序的平台,而Express是一个基于Node.js的Web应用程序框架。 使用Express框架可以帮助开发者快速构建Web应用程序和API。Express提供了一些常用的中间件和函数,简化了路由、错误处理、模板引擎集成等任务。同时,Express也支持各种插件和第三方模块,拥有庞大的生态系统。 基于Node.jsExpress框架的项目可以实现各种功能。例如,可以构建一个博客网站,用户可以浏览和发布博文;可以开发一个社交媒体平台,用户可以注册、发布消息和互动;还可以创建一个电子商务平台,支持用户注册、商品展示和购物车功能。 在项目中,我们可以使用Express的路由功能来定义不同的URL路径和对应的处理函数。通过路由,我们可以控制页面之间的跳转和数据的传递。同时,可以使用Express提供的中间件来处理请求和响应,例如校验用户身份、记录日志等。 在项目中,我们可以使用Express框架中的模板引擎来动态生成HTML页面。模板引擎可以根据特定的模板和数据生成最终的页面,提供灵活的页面展示能力。 除了Express框架本身,基于Node.js的项目还可以使用其他第三方模块来扩展功能。例如,可以使用数据库模块如Mongoose来与MongoDB进行数据交互;可以使用身份验证模块如Passport来管理用户身份认证;还可以使用图片处理模块如gm来对上传的图片进行处理等。 在开发基于Node.jsExpress框架的项目时,需要熟悉JavaScript编程语言和Node.js的相关知识。同时,需要了解Express框架的核心概念和用法。通过合理地组织代码、优化性能和测试功能,可以开发出高效、稳定的Web应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值