Node.js 로 뉴스 API 구축하기

JavaScriptBeginner
지금 연습하기

소개

이 프로젝트에서는 Node.js 를 사용하여 간단한 뉴스 API 를 만드는 방법을 배웁니다. 서버를 생성하고, 다양한 라우트를 처리하며, 특정 형식으로 뉴스 데이터를 반환하는 방법을 배우게 됩니다.

👀 미리보기

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

curl http://localhost:8080
## Output:
## 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: Add code to handle the request
    });
  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") {
      // Handle the /news route
    } else {
      // Handle other routes
    }
  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") {
      // Handle the /news route
      // ...
    } else {
      // Handle other routes
      res.end("404");
    }
  2. else 블록에서 요청된 라우트를 찾을 수 없음을 나타내기 위해 404 응답을 보냅니다.

이제 app.js 파일은 다음과 같아야 합니다:

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!");
});
✨ 솔루션 확인 및 연습

서버 테스트

  1. 터미널에서 다음 명령을 사용하여 서버를 실행합니다:

    node app.js
  2. 다시 새 터미널을 열고 다음 명령으로 터미널이 올바른지 확인합니다:

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

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

축하합니다! Node.js 를 사용하여 뉴스 API 를 성공적으로 만들었습니다.

✨ 솔루션 확인 및 연습

요약

축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.