DEV Community

Cover image for Automatizando requisições que exigem autenticação no Postman com pre-requests
Gustavo
Gustavo

Posted on • Edited on

Automatizando requisições que exigem autenticação no Postman com pre-requests

No Postman, como você testa as rotas da sua API REST ou as queries da sua API GraphQL que precisam de autenticação JWT? Você provavelmente cria uma rota/mutation para login e depois copia o token e coloca no header de authorization, certo? Nesse post eu vou te mostrar como você pode fazer todo esse processo de forma automatizada, seja em uma API REST ou GraphQL 🚀



Criando variáveis

Primeiro, precisamos ter variáveis para usar como Bearer Token na requisição/mutation.

Criar uma variável é bem simples:

  1. Clique na sua collection criada (seu projeto) no Postman
  2. Vá para a seção variables e crie a variável:

Criando scripts

Primeiro, você precisa criar um request/mutation que seja responsável por retornar um token que será utilizado. Por exemplo:

Agora na request/mutation, vá para a seção scripts.

Script para query GraphQL

const url = 'http://localhost:3000/graphql'; const method = 'POST'; const header = { 'Content-Type': 'application/json', }; const graphqlMutation = { query: ` mutation UserSignIn($email: String!, $password: String!) { userSignIn(input: { email: $email, password: $password }) { token error { field message } } } `, variables: { email: "postman_user@test.com", password: "pass123" } }; pm.sendRequest({ url, method, header, body: { mode: 'raw', raw: JSON.stringify(graphqlMutation) } }, (err, res) => { if (err) { console.error(err); return; } const response = res.json(); if (response.errors) { console.error("GraphQL Errors:", response.errors); } else if (response.data.userSignIn.error) { console.error("Authentication Error:", response.data.userSignIn.error); } else { pm.collectionVariables.set("bearerToken", response.data.userSignIn.token); } }); 
Enter fullscreen mode Exit fullscreen mode

Script para API Rest

let url = `http://localhost:3000/auth`; let method ='POST'; let header = { 'Content-Type': 'application/json', }; let payload = { login: "seu_login", password: "sua_senha", }; pm.sendRequest({ url, method, header, body: { mode: 'raw', raw: JSON.stringify(payload) }, }, (err, res) => { if(err) { console.log(err) return; } pm.environment.set("bearerToken", res.json().access_token) }); 
Enter fullscreen mode Exit fullscreen mode

Mais algumas palavrinhas - troubleshooting e ajuda

  • Tenha em mente que os requests foram feitos de acordo com o meu schema, adapte-o para o seu caso de uso.
    • Você pode ver como eu adaptei para o meu projeto aqui
  • Caso precise debuggar o próprio postman, você pode utilizar Ctrl+Alt+C para abrir o console
  • Caso precise de ajuda, você pode:

Top comments (0)