MST

星途 面试题库

面试题:Node.js HTTP模块中如何处理不同类型的HTTP请求

在Node.js的HTTP模块里,当创建一个HTTP服务器时,如何区分GET、POST等不同类型的HTTP请求,并分别进行处理?请举例说明实现思路和关键代码。
34.0万 热度难度
前端开发Node.js

知识考点

AI 面试

面试题答案

一键面试

在Node.js的HTTP模块中,可以通过request对象的method属性来区分不同类型的HTTP请求,以下是实现思路和关键代码示例:

  1. 实现思路

    • 创建HTTP服务器。
    • 在请求处理函数中,通过request.method判断请求类型。
    • 根据不同的请求类型,进行相应的处理。
  2. 关键代码

const http = require('http');

const server = http.createServer((request, response) => {
    if (request.method === 'GET') {
        // 处理GET请求
        response.writeHead(200, {'Content-Type': 'text/plain'});
        response.end('This is a GET request');
    } else if (request.method === 'POST') {
        let body = '';
        request.on('data', (chunk) => {
            body += chunk.toString();
        });
        request.on('end', () => {
            // 处理POST请求,这里简单输出请求体
            response.writeHead(200, {'Content-Type': 'text/plain'});
            response.end('This is a POST request. Body: ' + body);
        });
    } else {
        // 处理其他请求类型
        response.writeHead(405, {'Content-Type': 'text/plain'});
        response.end('Method Not Allowed');
    }
});

const port = 3000;
server.listen(port, () => {
    console.log(`Server running on port ${port}`);
});

上述代码创建了一个简单的HTTP服务器,当接收到请求时,根据request.method判断请求类型。如果是GET请求,直接返回固定信息;如果是POST请求,收集请求体数据并返回包含请求体的信息;对于其他请求类型,返回405 Method Not Allowed