mirror of
https://git.sakamoto.pl/laudom/http.sh.git
synced 2025-09-17 15:33:44 +02:00
1.2 KiB
1.2 KiB
HTTP.sh: URL router
After running ./http.sh init
, your app
directory should include a file called routes.sh
- this
is where you define custom routes. The syntax is as follows:
router "/uri/path" "${cfg[namespace]}/views/file.shs"
This can be used to remap files that are already in webroot
, but to prevent confusion, it is
recommended to make a separate directory for routed files. In other HTTP.sh projects, it's usually
views
.
The router also can be used to pass parameters:
router "/user/:username" "${cfg[namespace]}/views/profile.shs"
router "/user/:username/:postid" "${cfg[namespace]}/views/post.shs"
All router parameters are available at runtime through ${params[]}
associative array.
A sample profile.shs
could look like this:
#!/bin/bash
echo "$(html_encode "${params[username]}")'s profile"
Limitations
- The param name can only contain the following characters:
[A-Za-z0-9]
- Currently, the param itself can only contain the following characters:
[A-Za-z0-9.,%:\\-_]
; Otherwise, the route won't match, and you'll likely get a 404. Support for other special chars will be added somewhere down the line. - Router takes precedence over normal file matching; This could allow one to override a file.