테스트 백엔드 포켓몬 pt 2

16565 단어
Teste 백엔드 포켓몬 pt 2

Bom no ultimo artigo, finalizamos a estrutura padrão do nosso projeto, pra quem não viu vou deixar o link, pois é essencial ter lido ele para avançar nesse artigo.

Vou partir do principio que você já leu o ultimo artigo e seu projeto está igual o meu, agora vamos iniciar nossa estrutura de rotas para podermos criar nossa primeira controler.

Na raiz do seu projeto crie um arquivo routes.js , nele vamos colocar o código a baixo:

const bodyParser = require("body-parser");

module.exports = (app) => {
  // usamos o body-parser para lidar com as requisiçoes json
  app.use(bodyParser.json());


   // o primeiro parametro fa função get é a rota que iremos 
   // chamar na url o segundo já é uma função anônima, mas
   // nada impede de ser passado uma função  já criada
  app.get("/", (req, res) => {
    res.status(200).send({ message: "boas-vindas a API Pokémon GO" });
  });

};


Vamos voltar agora para nosso primeiro arquivo criado o index.js nele vamos informar o express que iremos usar nosso arquivo de rotas

// infromamos o path do nosse arquivo de rotas
const routes = require("./routes");

//nosso arquivo ficara assim logo depois de instanciar as 
//depêndencias nele


app.use(cors());
app.use(express.json());

const port = 3333;

// disponibiliza as rotas no arquivo base
routes(app);

app.listen(port, () => {
  console.log(`Servidor rodando na porta: ${port}`);
});


Agora criaremos nossa primeira 컨트롤러 para isso crie uma 파스타 chamada controller e dentro dela um arquivo chamado CsvController.js .

Antes vamos instalar uma depencia para manipularmos arquivos csv ou xlsx, para isso digitamos em nosso terminal o seguinte comando:

npm i node-xlsx


Voltando na nossa 컨트롤러 vamos criar uma classe e importar a biblioteca instalada

const xlsx = require("node-xlsx");
class ApiController{

}

// nessa linha exportamos nossa classe como módulo para que 
// ela possa ser acessada de outros lugares
module.exports = ApiController;


Dentro da nossa classe iremos criar uma função chamada importCsv
static async importCsv(req, res) {
  // essa variavel indica o local que esta o arquivo csv, deixei
  // o meu de exemplo mais depois do ${__dirname} passe o seu caminho
  // vou deixar logo a baixo o repositório novamente com o xlsx
    const plan = xlsx.parse(`${__dirname}/../api/PokemonGo.xlsx`);

   // Agora que ja temos nosso arquivo mapeado basta percorrermos ele
   // com um map e criarmos um objeto novo pois os nomes no arquivo
   // contem espaços e caracteres especiais depios batas tertornar ele 
  // e termos acesso deles na variavel readPlan

    const readPlan = plan[0].data.map((data, index) => {

      let dados = {
        row: data[0],
        name: data[1],
        pokedexNumber: data[3],
        imgName: data[4],
        generation: data[5],
        evolutionStage: data[6],
        evolved: data[7],
        familyID: data[8],
        crossGen: data[9],
        type1: data[10],
        type2: data[11],
        weather1: data[12],
        weather2: data[13],
        staTotal: data[14],
        atk: data[15],
        def: data[16],
        sta: data[17],
        legendary: data[18],
        spawns: data[21],
        regional: data[22],
        raidable: data[23],
        hatchable: data[24],
        Shiny: data[25],
        nest: data[26],
        new: data[27],
        notGettable: data[28],
        futureEvolve: data[29],
        CP40: data[30],
        CP39: data[31],
      };
      return dados
    });
   // deletamos o primeir registro do objeto pois ele só 
   //contem o nome das colunas da planilha
    delete readPlan[0];

    // Agora finalmente retornamos os dados para api
    return res.status(200).send(readPlan);
  }


Repositótio do projeto

Nosso código ainda não esta funcionando pois não criamos uma rota para acessar ele, para isso vamos voltar no nosso arquivo que usamos para definilas routes.js
// dentro dele vamos importar nossa controller primeiro
// a minha está no caminho a baixo, mais subistitua por um a sua escolha

const CsvController = require('../Controller/CsvController')

// agora nosso arquivo de rotas ficara assim
module.exports = (app) => {
  app.use(bodyParser.json());
  app.get("/", (req, res) => {
    res.status(200).send({ message: "boas-vindas a API Pokémon GO" });
  });

  // nessa linha adicionaremos nossa nossa nova rota,
  // indicando que ela deverá usar a controller criada anteriormente
  app.get("/import", CsvController.importCsv);

};


Agora basta chamarmos nossa rota, bom como essa é uma rota do tipo get podemos chamar ela pelo navegador pelo endereço https://localhost:3333 , porem eu recomendo o uso do insomnia .

A imagem abaixo é o resultado da nossa requisição.

좋은 웹페이지 즐겨찾기