Construindo uma API de Notícias com Node.js

JavaScriptBeginner
Pratique Agora

Introdução

Neste projeto, você aprenderá como criar uma API de notícias simples usando Node.js. Você aprenderá como criar um servidor, lidar com diferentes rotas e retornar dados de notícias em um formato específico.

👀 Pré-visualização

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

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

🎯 Tarefas

Neste projeto, você aprenderá:

  • Como criar um servidor usando Node.js
  • Como lidar com a rota /news e retornar dados de notícias
  • Como lidar com outras rotas e retornar uma resposta 404

🏆 Conquistas

Após concluir este projeto, você será capaz de:

  • Entender os conceitos básicos da criação de um servidor usando Node.js
  • Implementar uma API simples para retornar dados de notícias
  • Lidar com diferentes rotas e fornecer respostas apropriadas

Criar um Servidor

Para começar, abra o editor. Você deve ver um arquivo do editor - "app.js".

Nesta etapa, você aprenderá como criar um servidor usando Node.js. Siga os passos abaixo para completar esta etapa:

  1. Abra o arquivo app.js no seu ambiente de codificação.

  2. Importe o módulo http, que fornece a funcionalidade para criar um servidor:

    const http = require("http");
    
  3. Crie um novo servidor usando o método createServer():

    const serve = http.createServer();
    
  4. Adicione um ouvinte de evento ao servidor para lidar com as requisições recebidas:

    serve.on("request", (req, res) => {
      // TODO: Add code to handle the request
    });
    
  5. Inicie o servidor e escute na porta 8080:

    serve.listen(8080, () => {
      console.log("O serviço foi iniciado!");
    });
    

Lidar com a Rota /news

Nesta etapa, você aprenderá como lidar com a rota /news e retornar dados de notícias. Siga os passos abaixo para completar esta etapa:

  1. Dentro do ouvinte de evento de requisição, defina o cabeçalho da resposta para usar o formato utf8:

    res.setHeader("Content-type", "text/html;charset=utf8");
    
  2. Verifique a URL requisitada:

    if (req.url == "/news") {
      // Handle the /news route
    } else {
      // Handle other routes
    }
    
  3. Prepare os dados de notícias no formato requerido:

    const data = [
      {
        channelId: "5572a108b3cdc86cf39001cd",
        name: "National Focus"
      },
      {
        channelId: "5572a108b3cdc86cf39001ce",
        name: "International Focus"
      }
    ];
    
  4. Envie os dados de notícias como a resposta:

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

Lidar com Outras Rotas

Nesta etapa, você aprenderá como lidar com outras rotas que não são /news.

  1. Dentro do ouvinte de evento de requisição, adicione um bloco else para lidar com outras rotas:

    if (req.url == "/news") {
      // Handle the /news route
      // ...
    } else {
      // Handle other routes
      res.end("404");
    }
    
  2. No bloco else, envie uma resposta 404 para indicar que a rota requisitada não foi encontrada.

Agora, seu arquivo app.js deve se parecer com isto:

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!");
});

Testar o Servidor

  1. Execute o servidor usando o seguinte comando no terminal:

    node app.js
    
  2. Abra um novo terminal novamente e verifique se o terminal está correto com o seguinte comando:

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

Parabéns! Você criou com sucesso uma API de notícias usando Node.js.

Resumo

Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.

✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar