Node 服务器数据响应类型处理
一、设置不同的响应数据类型
在 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");
});