Resource Groups
Summary
Resources can be grouped to share functionality (e.g., middleware, path prefixes, etc.). Adding middleware and/or path prefixes to resources can only be done using a resource group. This is true for one or many resources.
Syntax
Creating a resource group can be done using the Request Chain module's Resource
class (specifically the static Resource.group()
method). This looks like:
// Code is shortened for brevity
import { Resource } from "https://esm.sh/@drashland/drash@v3.0.0-beta.1/modules/chains/RequestChain/mod.native.ts"
// Create the resource group
const groupedResources = Resource
.group() // Get the class' builder for quickly building a group
.resources( // Add these resources
ResourceA,
ResourceB,
ResourceC,
)
.pathPrefixes( // Prefix all paths in all resources with these prefixes
"/api/v1"
"/api/v1.x/"
)
.middleware( // Add these middleware classes to each resource
SomeMiddlewareA, // During runtime, SomeMiddlewareA will run first, then ...
SomeMiddlewareB, // ... SomeMiddlewareB will run, then the resource will be called
)
.build(); // Build the group
// Create the chain and add the resource group to it
const chain = Chain
.builder()
.resources(groupedResources)
.build();
The Resource.group()
method calls ResourceGroup.builder()
under the hood. It is the same as you importing the ResourceGroup
class from the Standard codebase and calling ResourceGroup.builder()
.
Next Steps
Feel free to follow our recommendation or navigate the documentation pages at your leisure.
Our Recommendations
- Learn how to create and add middleware to your resources
- Learn how to add path prefixes to your resources' paths