Static File Server
omni_httpd
dispatching can include a static file server to handle serving
static assets through omni_vfs
virtual filesystem later.
Requirements¶
The following extensions are required for this functionality:
- omni_vfs
- omni_mimetypes
Setup¶
To get the handler provisioned, one need to call instantiate_static_file_handler
:
This will create the static_file_handler
function in the public
schema. Its name can be configured
by passing name
argument with a desired function name.
Configuring¶
First, we'll define a static file router relation for the type of the virtual file
system we need (in this example, omni_vfs.local_fs
):
Now, we can implement the handler for the router:
create function fs_handler(req omni_httpd.http_request, router static_file_router)
returns omni_httpd.http_outcome
return static_file_handler(req, router.fs);
This function will take the request path as is, and it will try to find it in the given file system.
Directory listing
static_file_handler
also takes an optional boolean listing
argument that will make it
generate a list of files in a directory if there's no index.html
present. It's disabled by default.
Finally, we need to provision a routing entry in the router:
insert
into
static_file_router (match, handler, fs)
values
(omni_httpd.urlpattern('/assets/*'), 'docs_handler'::regproc,
omni_vfs.local_fs('/path/to/files'));
/assets/*
will be served the local filesystem pointing to /path/to/files
.