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 🚀
- Caso tenha algum problema, veja esta seção.
Criando variáveis
Primeiro, precisamos ter variáveis para usar como Bearer Token na requisição/mutation.
Criar uma variável é bem simples:
- Clique na sua collection criada (seu projeto) no Postman
- 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);
}
});
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)
});
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:
- Dar uma olhada neste post do Postman
- Comente aqui mesmo :)
- Entra em contato comigo em uma das minhas redes