img-adonis
#fullstack

Routing

node ace list:routes - untuk melihat daftar routes

Route Params

  1. route params menggunakan :param, contoh /posts/:id.
  2. optional params: jika diakhiri dengan tanda tanya (?) contoh /posts/:id?
  3. wildcard params: menggunakan (_), contoh /docs/:category/
  4. matcher params: menggunakan where() dan regex. cast digunakan untuk mengubah nilai params menjadi tipe data tertentu.
  5. builtin matcher params: adonisjs memiliki beberapa matcher params bawaan, seperti uuid, number, string.

HTTP Method

  1. http method bawaan: get, post, put, delete, patch.
  2. http method any: digunakan untuk menangani semua http method.
  3. custom http method menggunakan route.route().

Route Middleware

Jadi singkatnya: use() → pasang middleware ke route atau grup. middleware.global → untuk semua route.

Route Identifier

Route Group

router.group(() => {
  router.get('grup1', () => 'This is grup1') // localhost:3000/grup1
  router.get('grup2', () => 'This is grup2') // localhost:3000/grup2
})

router
  .group(() => {
    router.get('grup3', () => 'This is grup3') // localhost:3000/api/grup3
    router.get('grup4', () => 'This is grup4') // localhost:3000/api/grup4
  })
  .prefix('/api')

router
  .group(() => {
    router
      .group(() => {
        router.get('grup5', () => 'This is grup5') //  localhost:3000/api/v1/grup5
        router.get('grup6', () => 'This is grup6') // localhost:3000/api/v1/grup6
      })
      .prefix('/v1')
  })
  .prefix('/api')

router
  .group(() => {
    router.get('grup-identifier', () => 'This is grup-identifier').as('grup-identifier.index') // api.grup-identifier.index

    router
      .group(() => {
        router
          .get('grup-identifier2', () => 'This is grup-identifier2 index')
          .as('grup-identifier2.index') // api.commerce.grup-identifier2.index
      })
      .as('commerce')
  })
  .prefix('api')
  .as('api')