Node.js を使ったニュース API の構築

JavaScriptBeginner
オンラインで実践に進む

はじめに

このプロジェクトでは、Node.js を使って簡単なニュース API を作成する方法を学びます。サーバーを作成し、異なるルートを処理し、特定の形式でニュースデータを返す方法を学びます。

👀 プレビュー

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

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

🎯 タスク

このプロジェクトでは、以下のことを学びます。

  • Node.js を使ってサーバーを作成する方法
  • /news ルートを処理し、ニュースデータを返す方法
  • その他のルートを処理し、404 レスポンスを返す方法

🏆 成果

このプロジェクトを完了すると、以下のことができるようになります。

  • Node.js を使ってサーバーを作成する基本を理解する
  • ニュースデータを返す簡単な API を実装する
  • 異なるルートを処理し、適切なレスポンスを提供する

サーバーを作成する

始めるには、エディタを開きます。エディタから「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) => {
      // TODO: リクエストを処理するコードを追加する
    });
    
  5. サーバーを起動し、ポート 8080 で待ち受けます。

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

/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: "National Focus"
      },
      {
        channelId: "5572a108b3cdc86cf39001ce",
        name: "International Focus"
      }
    ];
    
  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) => {
  // TODO: リクエストを処理するコードを追加する
  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!");
});

サーバーをテストする

  1. ターミナルで以下のコマンドを使ってサーバーを起動します。

    node app.js
    
  2. 再度新しいターミナルを開き、以下のコマンドでターミナルが正しいことを確認します。

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

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

おめでとうございます!Node.js を使ってニュース API を成功裏に作成しました。

まとめ

おめでとうございます!このプロジェクトを完了しました。実力を向上させるために、LabEx でさらに多くの実験を行って練習してください。

✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習