使用 Node.js 开发一个简单的 web 服务器响应 HTTP get 请求

举报
汪子熙 发表于 2024/05/06 15:26:15 2024/05/06
【摘要】 在 Node.js 中创建一个基础的 HTTP 服务器并处理 GET 请求是一个常见且实用的任务。以下是一个简单的例子,展示了如何使用 Node.js 的 http 模块来启动一个 HTTP 服务器,监听 8080 端口,并且针对 URL 为 /ping 的 GET 请求,返回请求中所包含的查询参数。 1. 环境搭建确保你的开发环境中已经安装了 Node.js。可以通过在终端运行 node ...

在 Node.js 中创建一个基础的 HTTP 服务器并处理 GET 请求是一个常见且实用的任务。以下是一个简单的例子,展示了如何使用 Node.js 的 http 模块来启动一个 HTTP 服务器,监听 8080 端口,并且针对 URL 为 /ping 的 GET 请求,返回请求中所包含的查询参数。

1. 环境搭建

确保你的开发环境中已经安装了 Node.js。可以通过在终端运行 node -v 来检查 Node.js 是否已经安装。如果没有安装,可以从 Node.js 官网 下载并安装。

2. 编写服务器代码

我们将使用 Node.js 内置的 http 模块来创建服务器。以下是完整的代码实现,解析 GET 请求中的查询字符串,并将这些数据以 JSON 格式原样返回。

const http = require(`http`);
const url = require(`url`);

const server = http.createServer((req, res) => {
    const parsedUrl = url.parse(req.url, true); // 第二个参数为 true,表示解析查询字符串

    // 检查请求方法和 URL 路径
    if (req.method === `GET` && parsedUrl.pathname === `/ping`) {
        // 设置响应头部,内容类型为 JSON
        res.setHeader(`Content-Type`, `application/json`);

        // 获取查询参数
        const queryParams = parsedUrl.query;

        // 将查询参数转为 JSON 字符串
        const response = JSON.stringify(queryParams);

        // 返回状态码 200 和查询参数
        res.writeHead(200);
        res.end(response);
    } else {
        // 对于非 `/ping` 或非 GET 请求,返回 404 Not Found
        res.writeHead(404);
        res.end(`Resource not found`);
    }
});

// 服务器监听 8080 端口
server.listen(8080, () => {
    console.log(`Server is running on http://localhost:8080/`);
});

3. 运行和测试服务器

将上述代码保存为一个文件,例如 server.js,然后在命令行中运行这个文件:

node server.js

此时,服务器将开始在 8080 端口监听。你可以使用浏览器或者工具如 Postman 来发送请求,例如:

http://localhost:8080/ping?name=John&age=30

你应该会看到浏览器或工具中返回了如下 JSON 数据:

{"name":"John", "age":"30"}

这表示服务器正确解析了 URL 中的查询字符串,并将其原样返回。

4. 扩展和实用性

这个简单的服务器例子虽然实现了基本功能,但在实际应用中,你可能需要考虑更多的功能扩展,比如错误处理、日志记录以及安全性增强等。可以通过引入外部库如 Express.js 来简化路由管理和中间件处理,提升开发效率和项目的可维护性。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。