一、设置不同的响应数据类型
在 Node.js 的 `http` 模块中,通过 `res.writeHead` 方法可以设置不同的响应头,以指定响应的数据类型。
1. 纯文本响应
对于纯文本响应,可以将 `Content-Type` 设置为 `text/plain`
const http = require("http");const server = http.createServer((req, res) => {res.writeHead(200, { "Content-Type": "text/plain;charset=utf8;" });res.end("你好");});server.listen(3000, () => {console.log("Server running on port 3000");});
2. HTML 响应
对于 HTML 响应,可以将 `Content-Type` 设置为 `text/html`:
const http = require("http");const server = http.createServer((req, res) => {res.writeHead(200, { "Content-Type": "text/html;charset=utf8;" });res.end("<h1>你好<h1>");});server.listen(3000, () => {console.log("Server running on port 3000");});
3. JSON 响应
对于 JSON 响应,可以将 `Content-Type` 设置为 `application/json`:
const http = require("http");const server = http.createServer((req, res) => {const data = { message: "Hello, World!" };res.writeHead(200, { "Content-Type": "application/json" });res.end(JSON.stringify(data));});server.listen(3000, () => {console.log("Server running on port 3000");});
4. 图片响应(以 JPEG 为例)
对于图片响应,需要将 `Content-Type` 设置为相应的图片类型,如 `image/jpeg`:
const http = require("http");const fs = require("fs");const server = http.createServer((req, res) => {const imagePath = "path/to/your/image.jpg";fs.readFile(imagePath, (err, data) => {if (err) {res.writeHead(500, { "Content-Type": "text/plain" });res.end("Error loading image");} else {res.writeHead(200, { "Content-Type": "image/jpeg" });res.end(data);}});});server.listen(3000, () => {console.log("Server running on port 3000");});
5. 二进制文件响应
对于二进制文件响应,可以根据文件类型设置相应的 `Content-Type`:
const http = require("http");const fs = require("fs");const server = http.createServer((req, res) => {const binaryFilePath = "path/to/your/binaryfile.bin";fs.readFile(binaryFilePath, (err, data) => {if (err) {res.writeHead(500, { "Content-Type": "text/plain" });res.end("Error loading binary file");} else {res.writeHead(200, { "Content-Type": "application/octet-stream" });res.end(data);}});});server.listen(3000, () => {console.log("Server running on port 3000");});