Monthly Archives: julho 2019

Web Services dos Carros + Usuários com JWT

Posted by rlecheta on julho 08, 2019
Web Services / No Comments

Olá pessoal, para ajudar nas minhas aulas coloquei um web service com JWT no Heroku.

** Obs: o plano do Heroku é gratuito, portanto a aplicação sai do ar depois de 1 hora sem uso. Devido a isso, você pode encontrar um delay no primeiro acesso (caso a aplicação estiver parada).

** Tudo o que é explicado aqui é visto nos cursos Flutter Essencial e Spring Boot Essencial da Udemy.

Segue breve explicação:

O endpoint /api/v1 é público e continua funcionando como sempre mostrei nas minhas aulas/cursos/livros:

https://carros-springboot.herokuapp.com/api/v1/carros

Eu adicionei o endpoint /api/v2 com autenticação JWT, explicada no curso de Spring Boot na Udemy.

Para obter o token JWT, faça um POST neste endpoint, configure o Content-Type para application/json e envie o seguinte JSON:

https://carros-springboot.herokuapp.com/api/v2/login

JSON:


{
"username": "user",
"password": "123"
}

O retorno será um JSON com os dados do usuário e o token JWT:


{
"login": "user",
"nome": "User",
"email": "user@gmail.com",
"token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ1c2VyIiwiZXhwIjoxNTYzNDU4Njc2LCJyb2wiOlsiUk9MRV9VU0VSIl19.F-FxkS4wvJ0wyO5wE7Jdds0hbQBF_Uv4NPir9joMAHS7Ordtg4S0UtZujyBP7QmMoWNPYkfzQA-3N7h4N8RChQ",
"roles": [
"ROLE_USER"
]
}

** Você pode fazer login com o usuário “user” ou “admin“. A senha é sempre 123.

** Não é possível cadastrar novos usuários.

** Para salvar um carro com POST o token JWT precisa ser de um admin.

Depois de obter o Token JWT, podemos acessar a API /v2.

https://carros-springboot.herokuapp.com/api/v2/carros

No header, configure o Content-Type para application/json e adicione o parâmetro Authorization. Este deve ser Bearer + Token JWT, conforme print:

Caso o Token JWT não seja informado na API /v2 você receberá um JSON de erro com acesso Não Autorizado:

{
"error": "Não autorizado."
}

 

Eu também criei o web service /api/v2/users para listar todos os usuários da base:

https://carros-springboot.herokuapp.com/api/v2/users

Ao fazer um GET informando o token JWT o retorno será o seguinte:


[
{
"login": "rlecheta",
"nome": "Ricardo Lecheta",
"email": "rlecheta@gmail.com",
"roles": [
"ROLE_USER"
]
},
{
"login": "admin",
"nome": "Admin",
"email": "admin@gmail.com",
"roles": [
"ROLE_ADMIN"
]
},
{
"login": "user",
"nome": "User",
"email": "user@gmail.com",
"roles": [
"ROLE_USER"
]
}
]

Também foi criado um swagger para listar os serviços. Você pode até enviar o token JWT no header para testar a API /v2.

https://carros-springboot.herokuapp.com/swagger-ui.html

Para quem quiser a collection do Postman, segue o link para download:

Carros+JWT.postman_collection.json

Ao testar os web services, lembre que precisa fazer o login para obter o Token JWT e depois trocar o token nas demais requisições.

** Para maiores detalhes, verificar os cursos Flutter Essencial e Spring Boot Essencial da Udemy.