Express框架API详解与实例演示(下)

  1. response.xxx部分api介绍
  • response.set 方法用于设置 HTTP 响应头。
    • 通过这个方法,你可以在发送响应之前设置特定的 HTTP 头,以控制客户端如何处理收到的响应。
js 复制代码
const express = require('express');
const app = express();

app.get('/', (req, res) => {
  // 设置响应头
  res.set('Content-Type', 'text/plain');
  res.set({
    'Cache-Control': 'no-cache',
    'Custom-Header': 'Custom-Value'
  });

  // 发送响应
  res.send('Hello, World!');
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});
  • response.append 是 Express 框架中用于追加(添加)HTTP响应头的方法。
    • 如果追加的是数组,那么数组中的每个元素都会被追加到相应的响应头中。
js 复制代码
const express = require('express');
const app = express();

app.get('/', (req, res) => {
  // 追加响应头
  res.append('Link', ['<http://localhost/>', '<http://localhost:3000/>']);
  res.append('Set-Cookie', 'myCookie=myValue; Path=/;');

  // 发送响应
  res.send('Hello, World!');
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});
  • res.format 是 Express 框架中用于根据客户端的请求首部(Accept 头部)发送不同格式响应的方法。
    • 作用: 给同一个url不同输出格式
    • 该方法允许你根据客户端支持的不同 MIME 类型(例如 JSON、XML、HTML)选择性地发送不同格式的响应。
js 复制代码
const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.format({
    'text/plain': () => {
      res.send('Hello, World!');
    },
    'text/html': () => {
      res.send('<h1>Hello, World!</h1>');
    },
    'application/json': () => {
      res.json({ message: 'Hello, World!' });
    },
    'default': () => {
      res.status(406).send('Not Acceptable');
    }
  });
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});
  • res.location 是 Express 框架中用于设置 HTTP 响应头中 Location 的方法。Location 头用于指定客户端重定向时的目标 URL。
js 复制代码
// 在这个例子中,res.location 方法用于设置 Location 头,
// 指定客户端在访问 /redirect 路径时应该重定向到的目标 URL。
// 这里使用状态码 302 表示临时重定向,也可以使用其他状态码,例如 301 表示永久重定向。

const express = require('express');
const app = express();

app.get('/redirect', (req, res) => {
  // 设置重定向的目标 URL
  res.location('https://example.com');
  
  // 或者使用 res.redirect 方法
  // res.redirect('https://example.com');
  
  // 发送重定向响应
  res.status(302).send('Redirecting to https://example.com');
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});


// 需要注意的是,你也可以直接使用 res.redirect 方法来完成上述的操作,
// 它实际上是对 res.location 和 res.status 的组合调用的简便方式。
// res.redirect('https://example.com');
  • res.send 是 Express 框架中用于发送 HTTP 响应的方法。
    • 这个方法非常灵活,可以接受多种类型的参数,根据参数的类型采取不同的行为。
    • res.send 方法会自动处理不同类型的参数,并设置相应的响应头。
      • 例如,如果发送的是 JSON 数据,响应头的 Content-Type 会被设置为 application/json。
    • res.send 还可以处理其他类型,比如数字、布尔值等,它会根据不同的参数类型采取适当的行为。
      • 如果不提供参数,res.send 默认会发送一个空的响应。
    • 需要注意的是,res.send 方法一旦调用,后续的响应代码不会执行,因为响应已经被发送。
      • 如果需要在发送响应前执行其他逻辑,可以使用 next 函数传递控制权给下一个中间件或路由处理器。
js 复制代码
// 发送字符串
res.send('Hello, World!');

// 发送HTML
res.send('<h1>Hello, World!</h1>');

// 发送JSON:
res.send({ message: 'Hello, World!' });

// 发送Buffer
const bufferData = Buffer.from('Hello, World!');
res.send(bufferData);

// 发送状态码
res.status(404).send('Not Found');

// 发送JSON并设置状态码
res.status(200).json({ message: 'Success' });

// 链式调用
res.status(200).send('Hello, World!');
  • res.sendFile是 Express 框架中用于发送文件作为响应的方法。
    • 该方法用于向客户端发送本地文件,通常用于提供静态文件,例如图片、音频、视频、PDF 等。
js 复制代码
// res.sendFile 用于向客户端发送图片和文档文件。path.join 用于构建文件的绝对路径,确保文件路径是正确的。
// 这里的 express.static 中间件用于指定静态文件的目录(public 文件夹),以便 Express 能够直接访问这些文件。
// 需要注意的是,res.sendFile 会自动设置正确的 Content-Type 响应头,以便浏览器正确解释接收到的文件类型。
// 如果你的应用中有一个文件,你希望以文件形式提供给客户端,res.sendFile 是一个非常方便的方法。
const express = require('express');
const path = require('path');
const app = express();

// 设置静态文件目录
app.use(express.static(path.join(__dirname, 'public')));

app.get('/image', (req, res) => {
  // 发送图片文件
  res.sendFile(path.join(__dirname, 'public', 'image.jpg'));
});

app.get('/document', (req, res) => {
  // 发送文档文件
  res.sendFile(path.join(__dirname, 'public', 'document.pdf'));
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});
  1. router.xxx相关api
  • Router是一个中间件,用于更方便的组织路由,可以理解成一个小型的app
  • 比如可以创建user.js
js 复制代码
const express = require("express");
let router = express.Router();

router.get('/',(req, res,next)=>{
  res.send('/users')
})

router.get('/:id',(req, res,next)=>{
  res.send('/users:id')
})

router.get('/:id/edit',(req, res,next)=>{
  res.send('/users/:id/edit')
})

module.exports = router
  • 然后在app.js里面使用
js 复制代码
const user = require('./user')

app.use('/users', user)
  1. Express API 总结
  • express.xxx-内置中间件
  • app.xxx-应用设置(如模板配置、中间件、挂载路由)
  • req.xxx-操作请求
  • res.xxx-操作响应
  • router.xxx-操作路由
相关推荐
莹雨潇潇2 分钟前
Docker 快速入门(Ubuntu版)
java·前端·docker·容器
Jiaberrr10 分钟前
Element UI教程:如何将Radio单选框的圆框改为方框
前端·javascript·vue.js·ui·elementui
Tiffany_Ho1 小时前
【TypeScript】知识点梳理(三)
前端·typescript
安冬的码畜日常2 小时前
【D3.js in Action 3 精译_029】3.5 给 D3 条形图加注图表标签(上)
开发语言·前端·javascript·信息可视化·数据可视化·d3.js
小白学习日记3 小时前
【复习】HTML常用标签<table>
前端·html
丁总学Java3 小时前
微信小程序-npm支持-如何使用npm包
前端·微信小程序·npm·node.js
yanlele3 小时前
前瞻 - 盘点 ES2025 已经定稿的语法规范
前端·javascript·代码规范
懒羊羊大王呀3 小时前
CSS——属性值计算
前端·css
DOKE4 小时前
VSCode终端:提升命令行使用体验
前端