Routing Patterns
Routing Patterns in DGate are used to match incoming requests to specific modules.
DGate uses go-chi routing under the hood, which supports a variety of routing patterns.
Pattern Types
Direct matching
Direct matching is the simplest form of pattern matching. The domain must match the pattern exactly.
/will only match/./routewill only match/route./route/will only match/route/.
Wildcard matching
Wildcards are used to match multiple paths. The wildcard character is *.
/route/*will match/route/abc,/route/123,/route/, etc./route/*will not match/route/route/*/will match/route/abc/,/route/abc/123/,/route/, etc.
Routing Parameters
Routing parameters are used to match specific patterns. The pattern must be enclosed in {}.
/route/{id}will match/route/abc123, etc./route/{month}-{year}will match/route/10-2020, etc./route/{id}/{name}will match/route/abc123/xyz, etc.
Regular Expressions
Regular expressions can be combined with routing parameters to match specific patterns.
/route/{id:[0-9]+}will match/route/1,/route/123, etc./route/{id:[a-z]+}will match/route/abc,/route/xyz, etc./route/{id:[a-z0-9]+}will match/route/abc123,/route/xyz123, etc.
When using modules, the slug can be used to get the part of the path that was matched by the pattern.
For example, if the path is /route/{id}, the slug id can be used to get the value of the id parameter. If the path is /route/*, the slug * can be used to get the value of the wildcard.
function testFunction(ctx: ModuleContext) {
const id = ctx.pathParam('id'); // returns matched value of {id} or undefined
...
}