STRAPI NODEJS CMF | Nunca foi tão fácil criar uma API | Criando um Middleware | SW9
Olá Pessoal. Sejam Bem Vindos ao canal e blog SW9 (http://blog.sw9.com.br) ?
Tem muita coisa legal que eu gostaria de compartilhar sobre o STRAPI, portanto, fiquem atentos que os próximos episódios serão dedicados a ele. ?
Todo o conteúdo preparado durante esta imersão, vai fornecer todas as condições para utilizar o STRAPI nos seus projetos, trazendo segurança, facilidade de manutenção, escalabilidade e performance. Então você é o meu convidado a partir de agora para acompanhar esta nova forma de construir APIs.?
#O que vimos no episódio anterior?
No nono episódio da série, você conheceu a estrutura de log que já vem integrada ao STRAPI, aprendendo a configurá-lo e utilizá-lo. Você perdeu este conteúdo ?? Não se preocupe, segue o link para acessá-lo http://blog.sw9.com.br/2019/09/24/strapi-nodejs-cmf-nunca-foi-tao-facil-criar-uma-api-logging-sw9
#O que você vai aprender hoje?
Neste décimo episódio, você vai entender um pouco sobre a estrutura de middleware existente no STRAPI, e em conjunto com o que aprendemos no episódio anterior (logging), vamos criar um middleware para registro de logs em arquivo texto.
#Strapi e Middleware
Como o nosso principal objetivo aqui é criar um middleware que permita registrar os logs das requisições em arquivo texto, em primeiro lugar precisamos entender um pouco sobre middleware, sua estrutura dentro do STRAPI, e como podemos configurar.
O que é um middleware? De uma forma bem simplista, um middleware é uma função que deve desempenhar um papel específico e pode ser facilmente plugado e ativado para ser executado sempre que um endpoint é chamado. Esta função é chamada efetivamente antes da requisição propriamente dita ser executada.
Para um melhor entendimento, vamos citar como exemplo um middleware de autenticação. Geralmente o middleware de autenticação, quando plugado e ativo, faz uma checagem cada vez que um endpoint é chamado para validar se o token gerado durante o processo de login ainda é válido. Caso seja válido, a requisição é executada normalmente, caso contrário, o middleware dá um sinal para executar um novo processo de checagem de login e renovação do token.
Por padrão, o STRAPI já vem com vários middlewares disponíveis, que podem ser configurados e usados sempre que você precisar. A lista completa de middlewares disponíveis pode ser consultada na própria página de documentação do STRAPI https://strapi.io/documentation/3.0.0-beta.x/advanced/middlewares.html#structure
Até aqui tudo bem, mas ai você me pergunta: Qual o procedimento que devo seguir para usar os middlewares já disponíveis? Qual a recomendação para criar o meu próprio middleware?
Estas duas perguntas serão respondidas ao longo deste POST.
#Usando os middlewares disponíveis
Seja para usar os middlewares já instalados por padrão, como para usar um middleware customizado, o procedimento é o mesmo.
Para usá-los, você deve configurar a ordem de carregamento dos middlewares e na sequência ativá-los.
#Ordem de carregamento
O STRAPI usa uma estrutura de pilha que permite carregar vários middlewares e definirmos a ordem de carregamento deles. Para configurar este comportamento, devemos editar o arquivo middleware.json que fica localizado dentro da pasta config de nosso projeto (./config/middleware.json).
Dentro deste arquivo vamos localizar as seguintes chaves:
timeout: serve para definirmos o tempo máximo permitido para carregar um middleware.
load: dentro desta chave vamos encontrar as opções [before], [order], [after]. São estas opções que definem a ordem de carregamento dos middlewares.
before: recebe um array de middlewares que devem ser carregados em primeiro lugar (neste caso, a ordem do array importa).
after: recebe um array de middlewares que precisam ser carregados por último (neste caso, a ordem do array importa).
order: recebe um array de middlewares que precisam ser carregados em uma ordem específica.
Para o nosso projeto, o arquivo de configuração vai ficar assim:
“timeout”: 100,
“load”: {
“before”: [
“responseTime”,
“logger”,
“cors”,
“responses”,
“gzip”
],
“order”: [
“Define the middlewares’ load order by putting their name in this array is the right order”
],
“after”: [
“parser”,
“router”
]
}
Comportamento esperado: os middlewares serão carregados na seguinte ordem responseTime – logger – cors – responses – gzip – parser – router
#Configurando um middleware
O próximo passo é definir se desejamos configurar e ativar o middleware para que seja executado a cada requisição.
Para isso devemos editar um arquivo chamado request.json que pode ser encontrado dentro da pasta .config/environments/*/request.json.
Abrindo o arquivo, você deve incluir a chave correspondente ao nome do middleware e dentro desta chave usar as configurações disponíveis e defini-las conforme a sua necessidade.
Vamos dar o exemplo do middleware chamado logger. A configuração dentro do arquivo request.json ficaria assim:
“logger”: {
“level”: “info”,
“exposeInContext”: true,
“requests”: true
}
Pronto, esses são os dois passos que precisa seguir para carregar, ativar e configurar o uso de um middleware.
O próximo passo é criarmos o nosso próprio middleware para gravação de logs de requisição em arquivo texto.
#Criando um Middleware
O primeiro passo para criarmos o nosso middleware de log, é criar a seguinte estrutura de pastas dentro da raiz do projeto:
raiz-do-projeto/middlewares/nome-do-middleware
Transportando isso para a nossa realidade, deve ficar assim: ./sw9/middlewares/logFile
Dentro da pasta logFile, você deve criar um arquivo vazio chamado index.js. Usaremos este arquivo para incluir o código de nosso middleware de log.
Com a estrutura de diretórios criada, o próximo passo é editarmos o arquivo ./config/middleware.json, para definirmos a ordem de carregamento do nosso middleware.
O arquivo editado deve ficar assim:
“timeout”: 100,
“load”: {
“before”: [
“responseTime”,
“logger”,
“logFile“,
“cors”,
“responses”,
“gzip”
],
“order”: [
“Define the middlewares’ load order by putting their name in this array is the right order”
],
“after”: [
“parser”,
“router”
]
}
O passo seguinte é localizarmos o arquivo request.json, incluirmos a chave com o mesmo nome de nosso middleware (logFile) e adicionarmos a configuração enabled: true
“logFile”: {
“enabled”: true
},
Pronto!!! Todas as configurações necessárias foram feitas. Agora devemos editar o arquivo index.js (./sw9/middlewares/logFile/index.js) para incluir o código completo que vai interceptar as requisições e armazenar o resultado em arquivo texto.
O último passo é dar um build (strapi build), iniciar o projeto (strapi start) e acompanhar o middleware em ação.
Durante a aula em vídeo, eu vou passar linha a linha por este código. Mas não é só isso, vou deixar o código disponível na minha área de downloads para que você possa fazer download e estudar. ?
#Hora de assistir ao vídeo
Chegou o momento de arregaçar as mangas e colocar a mão na massa. ?? ??♂️ ?♀️
[Conclusão]
No episódio de hoje [STRAPI NODEJS CMF | Nunca foi tão fácil criar uma API | Criando um middleware | SW9], você aprendeu como é a estrutura de middleware no strapi, e criamos um middleware para gravação de log em arquivo. ?
Está disponível na área de downloads o projeto que construímos hoje. Para acessá-lo basta clicar no link a seguir http://blog.sw9.com.br/acesso-area-de-downloads/, informar um e-mail válido e automaticamente receberá as instruções para acesso.
Dentro da minha área de Downloads, procure pela pasta /STRAPI. O resto é com vocês
Bom, por hoje é só. Aproveitem o vídeo e bons estudos. Fiquem antenados, que em breve teremos mais novidades.
Espero que gostem deste vídeo. Aproveito para pedir a participação de vocês no canal e blog, curtindo, compartilhando, dando sua opinião e se inscrevendo no canal e blog para receber as novidades em primeira mão.
Fiquem com Deus e até o próximo vídeo.
[Links úteis]
Curso Relacionado: [Aprenda HTML 5 e CSS 3 e Comece a Criar Seus Próprios Sites] – https://goo.gl/QsLPph
Link do vídeo: https://youtu.be/1u-ykRzcAH4
Playlist Ferramentas de Teste de API: https://www.youtube.com/watch?v=9GAl1nlNcbo&list=PLtluGZbI5ESiFrDDnKmwJNdrKZKI-hECj
PlayList Mega Série HTML5: https://www.youtube.com/watch?v=D-XN-miEwP0&list=PLtluGZbI5ESj8XWTJcJmrVW6Q_tCi7uR8
Área de Downloads: http://blog.sw9.com.br/acesso-area-de-downloads/
Meu Blog: http://blog.sw9.com.br
Meu GitHub: https://sw9brl.github.io/MyGitHubPage
Canal youtube: https://youtube.com/+sw9brl
✔ Clique em gostei ✔ Compartilhe ✔ Inscreva-se
Que tal me pagar um café :-)
Uma pequena quantidade de café foi consumida durante a produção de um post + vídeo. Se puder, contribua adicionando mais combustível para que eu tenha condições de seguir em frente.
Brincadeiras à parte, o valor selecionado é multiplicado por 2 (x2) que representa a multiplicação de minha dedicação a cada contribuição que recebo.
Deixe um comentário