freeCodeCamp/curriculum/challenges/portuguese/05-apis-and-microservices/basic-node-and-express/implement-a-root-level-requ...

3.5 KiB

id title localeTitle challengeType
587d7fb1367417b2b2512bf3 Implement a Root-Level Request Logger Middleware Implementar um middleware de logger de solicitação de nível raiz 2

Description

Antes de introduzirmos a função de middleware express.static() . Agora é hora de ver qual middleware é, com mais detalhes. As funções de middleware são funções que levam 3 argumentos: o objeto de solicitação, o objeto de resposta e a próxima função no ciclo de solicitação-resposta do aplicativo. Essas funções executam algum código que pode ter efeitos colaterais no aplicativo e geralmente adicionam informações aos objetos de solicitação ou resposta. Eles também podem terminar o ciclo enviando a resposta, quando alguma condição é atendida. Se eles não enviarem a resposta, quando eles terminarem, iniciarão a execução da próxima função na pilha. Isso é acionado chamando o terceiro argumento em next() . Mais informações na documentação expressa . Veja o seguinte exemplo:
function(req, res, next) {
console.log("I'm a middleware...");
next();
}
Vamos supor que montamos essa função em uma rota. Quando uma solicitação corresponde à rota, ela exibe a string "Sou um middleware ...". Em seguida, ele executa a próxima função na pilha. Neste exercício, vamos construir um middleware de nível raiz. Como vimos no desafio 4, para montar uma função de middleware no nível da raiz, podemos usar o método app.use(<mware-function>) . Nesse caso, a função será executada para todas as solicitações, mas você também pode definir condições mais específicas. Por exemplo, se você quiser que uma função seja executada apenas para solicitações POST, você pode usar app.post(<mware-function>) . Existem métodos análogos para todos os verbos http (GET, DELETE, PUT,…). Construa um logger simples. Para cada requisição, deve logar no console uma string tomando o seguinte formato: method path - ip . Um exemplo seria: GET /json - ::ffff:127.0.0.1 . Observe que há um espaço entre o method e o path e que o traço que separa o path e o ip é cercado por um espaço em ambos os lados. Você pode obter o método de solicitação (verbo http), o caminho de rota relativo e o ip do chamador do objeto de solicitação, usando req.method , req.path e req.ip Lembre-se de chamar next() quando terminar, ou seu servidor ficará preso para sempre. Certifique-se de ter aberto o 'Logs' e veja o que acontece quando chega algum pedido… Dica: o Express avalia funções na ordem em que aparecem no código. Isso também é verdade para o middleware. Se você quer que ele funcione para todas as rotas, ele deve ser montado antes delas.

Instructions

Tests

tests:
  - text: O middleware do registrador de nível raiz deve estar ativo
    testString: 'getUserInput => $.get(getUserInput(''url'') + ''/_api/root-middleware-logger'').then(data => { assert.isTrue(data.passed, ''root-level logger is not working as expected''); }, xhr => { throw new Error(xhr.responseText); })'

Challenge Seed

Solution

// solution required