Building a News API with Node.js

JavaScriptJavaScriptBeginner
Practice Now

Introduction

In this project, you will learn how to create a simple news API using Node.js. You will learn how to create a server, handle different routes, and return news data in a specific format.

👀 Preview

curl http://localhost:8080/news
## Output:
## [{"channelId":"5572a108b3cdc86cf39001cd","name":"National Focus"},{"channelId":"5572a108b3cdc86cf39001ce","name":"International Focus"}]

curl http://localhost:8080
## Output:
## 404

ðŸŽŊ Tasks

In this project, you will learn:

  • How to create a server using Node.js
  • How to handle the /news route and return news data
  • How to handle other routes and return a 404 response

🏆 Achievements

After completing this project, you will be able to:

  • Understand the basics of creating a server using Node.js
  • Implement a simple API to return news data
  • Handle different routes and provide appropriate responses

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("`JavaScript`")) -.-> javascript/AdvancedConceptsGroup(["`Advanced Concepts`"]) javascript(("`JavaScript`")) -.-> javascript/NetworkingGroup(["`Networking`"]) javascript/AdvancedConceptsGroup -.-> javascript/es6("`ES6 Features`") javascript/NetworkingGroup -.-> javascript/http_req("`HTTP Requests`") subgraph Lab Skills javascript/es6 -.-> lab-301448{{"`Building a News API with Node.js`"}} javascript/http_req -.-> lab-301448{{"`Building a News API with Node.js`"}} end

Create a Server

To get started, open the editor. You should see a file from the editor - "app.js".

In this step, you will learn how to create a server using Node.js. Follow the steps below to complete this step:

  1. Open the app.js file in your coding environment.

  2. Import the http module, which provides the functionality to create a server:

    const http = require("http");
  3. Create a new server using the createServer() method:

    const serve = http.createServer();
  4. Add an event listener to the server to handle incoming requests:

    serve.on("request", (req, res) => {
      // TODO: Add code to handle the request
    });
  5. Start the server and listen on port 8080:

    serve.listen(8080, () => {
      console.log("The service has been started!");
    });

Handle the /news Route

In this step, you will learn how to handle the /news route and return news data. Follow the steps below to complete this step:

  1. Inside the request event listener, set the response header to use the utf8 format:

    res.setHeader("Content-type", "text/html;charset=utf8");
  2. Check the requested URL:

    if (req.url == "/news") {
      // Handle the /news route
    } else {
      // Handle other routes
    }
  3. Prepare the news data in the required format:

    const data = [
      {
        channelId: "5572a108b3cdc86cf39001cd",
        name: "National Focus"
      },
      {
        channelId: "5572a108b3cdc86cf39001ce",
        name: "International Focus"
      }
    ];
  4. Send the news data as the response:

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

Handle Other Routes

In this step, you will learn how to handle other routes that are not /news.

  1. Inside the request event listener, add an else block to handle other routes:

    if (req.url == "/news") {
      // Handle the /news route
      // ...
    } else {
      // Handle other routes
      res.end("404");
    }
  2. In the else block, send a 404 response to indicate that the requested route was not found.

Now, your app.js file should look like this:

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

serve.on("request", (req, res) => {
  // TODO: Add code to handle the request
  res.setHeader("Content-type", "text/html;charset=utf8");
  console.log(req.url);
  if (req.url == "/news") {
    const data = [
      {
        channelId: "5572a108b3cdc86cf39001cd",
        name: "National Focus"
      },
      {
        channelId: "5572a108b3cdc86cf39001ce",
        name: "International Focus"
      }
    ];

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

serve.listen(8080, () => {
  console.log("The service has been started!");
});

Test the Server

  1. Run the server using the following command in the terminal:

    node app.js
  2. Open a new terminal again and verify that the terminal is correct with the following command:

curl http://localhost:8080/news
## Output:
## [{"channelId":"5572a108b3cdc86cf39001cd","name":"National Focus"},{"channelId":"5572a108b3cdc86cf39001ce","name":"International Focus"}]

curl http://localhost:8080
## Output:
## 404

Congratulations! You have successfully created a news API using Node.js.

âœĻ Check Solution and Practice

Summary

Congratulations! You have completed this project. You can practice more labs in LabEx to improve your skills.

Other JavaScript Tutorials you may like