API simples com AdonisJS

Responsive image

Hoje vamos falar sobre como é fácil de criar uma api com AdonisJS um ótimo framework , e o por ser muito parecido com o Laravel facilita muito para quem esta vindo do php para esse mundo js.

Como o adonisjs funciona, de forma muito simples, a ideia do framework é facilitar, e no meu caso que uso react de front-end ele realmente é uma mão na roda.

Vamos ao código e ver como é fácil montar uma api com ele.

primeiro vamos instalar o CLI do adonis

npm i -g @adonisjs/cli

Apos instalado , vamos ver como ele gera a estrutura para api

adonis new api --api-only

Com esse comando vamos gerar um estrutura pré-montada com a JWT de autenticação , uma desvantagem desse template é que terá que implementar a class de Auth para fazer o login, e consultar quem esta logado, mas como a ideia é agilizar eu tenho ela prontinha para você .

para isso faça.

adonis make:controller AuthController

entao dentro de app/Controllers/Http/AuthController.js

'use strict'
const User = use('App/Models/User')

class AuthController {

    async me ({auth}) {
        return auth.getUser()
      }

      async login({request, auth, response}) {
        const {email, password} = request.all();
        let token = await auth.attempt(email, password);
        return response.status(200).json({data: token, message: 'Login successfull', status: true});
      }

      async logout({ auth, response }) {
        await auth.logout()
        return response.redirect('/')
      }

}

module.exports = AuthController

uma class bem simples, para poder usar-mos. agora, basta mudar nosso router.js

Route
  .post('/auth', 'AuthController.login')

Route
  .group(() => {
    Route
      .get('me', 'AuthController.me')
  })
  .prefix('/api/v1')
  .middleware(['auth:jwt'])

dessa forma já ira conseguir autenticar e usar as permissão caso o usuário esteja logado.

feito isso bastar subir nosso banco.

adonis migration:run

Para quem nao tem muita paciencia pode clonar o git e fazer os testes

adonis new nomeDoProjeto --blueprint=devalexandre/adonis-api-app

esse comando vai usar a versão da indev do adonis onde ja tem tudo configurado em relação a jwt e auth