테스트 백엔드 포켓몬 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.
Reference
이 문제에 관하여(테스트 백엔드 포켓몬 pt 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/renato_zero6/teste-backend-pokemon-pt-2-3eom텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)