使用 Node.js 构建新闻 API

JavaScriptJavaScriptBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个项目中,你将学习如何使用Node.js创建一个简单的新闻API。你将学习如何创建一个服务器,处理不同的路由,并以特定格式返回新闻数据。

👀 预览

curl http://localhost:8080/news
## 输出:
## [{"channelId":"5572a108b3cdc86cf39001cd","name":"国内焦点"},{"channelId":"5572a108b3cdc86cf39001ce","name":"国际焦点"}]

curl http://localhost:8080
## 输出:
## 404

🎯 任务

在这个项目中,你将学习:

  • 如何使用Node.js创建一个服务器
  • 如何处理/news路由并返回新闻数据
  • 如何处理其他路由并返回404响应

🏆 成果

完成这个项目后,你将能够:

  • 理解使用Node.js创建服务器的基础知识
  • 实现一个简单的API来返回新闻数据
  • 处理不同的路由并提供适当的响应

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript(("JavaScript")) -.-> javascript/DOMManipulationGroup(["DOM Manipulation"]) javascript(("JavaScript")) -.-> javascript/NetworkingGroup(["Networking"]) javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript/BasicConceptsGroup -.-> javascript/cond_stmts("Conditional Statements") javascript/AdvancedConceptsGroup -.-> javascript/error_handle("Error Handling") javascript/DOMManipulationGroup -.-> javascript/dom_manip("DOM Manipulation") javascript/DOMManipulationGroup -.-> javascript/event_handle("Event Handling") javascript/NetworkingGroup -.-> javascript/http_req("HTTP Requests") javascript/NetworkingGroup -.-> javascript/json("JSON") javascript/NetworkingGroup -.-> javascript/api_interact("API Interaction") subgraph Lab Skills javascript/cond_stmts -.-> lab-445682{{"使用 Node.js 构建新闻 API"}} javascript/error_handle -.-> lab-445682{{"使用 Node.js 构建新闻 API"}} javascript/dom_manip -.-> lab-445682{{"使用 Node.js 构建新闻 API"}} javascript/event_handle -.-> lab-445682{{"使用 Node.js 构建新闻 API"}} javascript/http_req -.-> lab-445682{{"使用 Node.js 构建新闻 API"}} javascript/json -.-> lab-445682{{"使用 Node.js 构建新闻 API"}} javascript/api_interact -.-> lab-445682{{"使用 Node.js 构建新闻 API"}} end

创建一个服务器

首先,打开编辑器。你应该会在编辑器中看到一个文件——“app.js”。

在这一步中,你将学习如何使用Node.js创建一个服务器。按照以下步骤完成此步骤:

  1. 在你的编码环境中打开“app.js”文件。

  2. 导入http模块,该模块提供创建服务器的功能:

    const http = require("http");
  3. 使用createServer()方法创建一个新服务器:

    const serve = http.createServer();
  4. 为服务器添加一个事件监听器,以处理传入的请求:

    serve.on("request", (req, res) => {
      // 待办事项:添加处理请求的代码
    });
  5. 启动服务器并监听端口8080:

    serve.listen(8080, () => {
      console.log("服务已启动!");
    });

处理 /news 路由

在这一步中,你将学习如何处理/news路由并返回新闻数据。按照以下步骤完成此步骤:

  1. 在请求事件监听器内部,设置响应头以使用utf8格式:

    res.setHeader("Content-type", "text/html;charset=utf8");
  2. 检查请求的URL:

    if (req.url == "/news") {
      // 处理 /news 路由
    } else {
      // 处理其他路由
    }
  3. 以所需格式准备新闻数据:

    const data = [
      {
        channelId: "5572a108b3cdc86cf39001cd",
        name: "国内焦点"
      },
      {
        channelId: "5572a108b3cdc86cf39001ce",
        name: "国际焦点"
      }
    ];
  4. 将新闻数据作为响应发送:

    res.end(JSON.stringify(data));

处理其他路由

在这一步中,你将学习如何处理除/news之外的其他路由。

  1. 在请求事件监听器内部,添加一个else块来处理其他路由:

    if (req.url == "/news") {
      // 处理 /news 路由
      //...
    } else {
      // 处理其他路由
      res.end("404");
    }
  2. else块中,发送一个404响应,以表明请求的路由未找到。

现在,你的app.js文件应该如下所示:

const http = require("http");
const serve = http.createServer();

serve.on("request", (req, res) => {
  // 待办事项:添加处理请求的代码
  res.setHeader("Content-type", "text/html;charset=utf8");
  console.log(req.url);
  if (req.url == "/news") {
    const data = [
      {
        channelId: "5572a108b3cdc86cf39001cd",
        name: "国内焦点"
      },
      {
        channelId: "5572a108b3cdc86cf39001ce",
        name: "国际焦点"
      }
    ];

    res.end(JSON.stringify(data));
  } else {
    res.end("404");
  }
});

serve.listen(8080, () => {
  console.log("服务已启动!");
});

测试服务器

  1. 在终端中使用以下命令运行服务器:

    node app.js
  2. 再次打开一个新终端,并使用以下命令验证终端是否正确:

curl http://localhost:8080/news
## 输出:
## [{"channelId":"5572a108b3cdc86cf39001cd","name":"国内焦点"},{"channelId":"5572a108b3cdc86cf39001ce","name":"国际焦点"}]

curl http://localhost:8080
## 输出:
## 404

恭喜你!你已成功使用Node.js创建了一个新闻API。

✨ 查看解决方案并练习

总结

恭喜你!你已完成这个项目。你可以在LabEx中练习更多实验来提升你的技能。