0.0.11 • Published 5 months ago
@softwarecitadel/adonisjs-girouette v0.0.11
Girouette
Girouette is a AdonisJS package providing decorators to handle routing.
Installation
npm install @softwarecitadel/adonisjs-girouette
node ace configure @softwarecitadel/adonisjs-girouette
Usage
// CustomersController.ts
import { Get, Post, Patch, Delete, Middleware } from "@ioc:SoftwareCitadel/Girouette"
export default class CustomersController {
@Get("/customers", "customers.index")
public async index(/* ... */) {
// ...
}
@Get("/customers/create", "customers.create")
@Middleware("auth")
public async create(/* ... */) {
// ...
}
@Post("/customers", "customers.store")
@Middleware("auth")
public async store(/* ... */) {
// ...
}
@Get("/customers/:id", "customers.show")
@Where("id", /^[0-9]+$/)
public async show(/* ... */) {
// ...
}
@Get("/customers/:id/edit", "customers.edit")
@Where("id", /^[0-9]+$/)
@Middleware("auth")
public async edit(/* ... */) {
// ...
}
@Patch("/customers/:id", "customers.update")
@Where("id", /^[0-9]+$/)
@Middleware("auth")
public async update(/* ... */) {
// ...
}
@Delete("/customers/:id", "customers.destroy")
@Where("id", /^[0-9]+$/)
@Middleware("auth")
public async destroy(/* ... */) {
// ...
}
}
Resourceful controller
// CustomersController.ts
import { Resource } from "@ioc:SoftwareCitadel/Girouette"
@Resource("/customers", "customers", {"*": "auth"})
export default class CustomersController {
public async index(/* ... */) {
// ...
}
public async create(/* ... */) {
// ...
}
public async store(/* ... */) {
// ...
}
public async show(/* ... */) {
// ...
}
public async edit(/* ... */) {
// ...
}
public async update(/* ... */) {
// ...
}
public async destroy(/* ... */) {
// ...
}
}
You can also create a resource that is API only.
// CustomersController.ts
import { ApiOnly, Resource } from "@ioc:SoftwareCitadel/Girouette"
@Resource("/users", "users")
@ApiOnly()
export default class CustomersController {
// ...
}
Filtering routes
You can restrict specific methods using the @Except
decorator.
// CustomersController.ts
import { Except, Resource } from "@ioc:SoftwareCitadel/Girouette"
@Resource("/users", "users")
@Except(["store", "update", "destroy"])
export default class CustomersController {
// ...
}
The opposite of @Except
decorator is the @Only
decorator which can be used to register only the methods you want.
// CustomersController.ts
import { Only, Resource } from "@ioc:SoftwareCitadel/Girouette"
@Resource("/users", "users")
@Only(["index", "show"])
export default class CustomersController {
// ...
}