一、设置不同的响应数据类型
在 Node.js 的 `http` 模块中,通过 `res.writeHead` 方法可以设置不同的响应头,以指定响应的数据类型。
1. 纯文本响应
对于纯文本响应,可以将 `Content-Type` 设置为 `text/plain`
            
            
              javascript
              
              
            
          
          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`:
            
            
              javascript
              
              
            
          
          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`:
            
            
              javascript
              
              
            
          
          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`:
            
            
              javascript
              
              
            
          
          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`:
            
            
              javascript
              
              
            
          
          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");
});