Blog SW9

Desenvolvimento Web e Híbrido na prática.
Tome um café, concentre-se, codifique. (งツ)ว

STRAPI NODEJS CMF | Nunca foi tão fácil criar uma API | Criando um MiddleWare | SW9

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. 🏃🏿 🏃🏻‍♂️ 🏃‍♀️

Aprenda HTML 5 e CSS 3

Comece a criar Sites Com o Melhor do HTML 5 e CSS 3
Curso Relacionado

[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

Post: http://blog.sw9.com.br/2019/09/26/strapi-nodejs-cmf-nunca-foi-tao-facil-criar-uma-api-criando-um-middleware-sw9

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

Tópicos Relacionados

Deixe um comentário

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Paulo Eduardo
Geek desde criança, sempre me interessei por games, filmes e tecnologia. Sou graduado em engenharia da computação pela PUC Campinas. Possuo mais de 15 anos de experiência em desenvolvimento, com foco maior em desenvolvimento web, gestão de times e mais recentemente desenvolvimento mobile utilizando HTML e Javascript.

Termos como #backend, #frontend e #fullstack fazem parte do meu dia a dia.

Não deixe de acompanhar meu blog, canal youtube e meus produtos digitais.

Divirta-se e bons estudos. :-)
Paulo Eduardo on sabyoutubePaulo Eduardo on sabinstagramPaulo Eduardo on sabgithubPaulo Eduardo on sabfacebook
✌(◕‿-)✌ Tempo Limitado - Tenha acesso a nossa área de DownloadsClique Aqui - É Grátis
How to whitelist website on AdBlocker?