:- use_module(library(http/http_dispatch)). [det]http_handler(+Path, 
:Closure, +Options)
[det]http_handler(+Path, 
:Closure, +Options)'/home.html' or a term 
Alias(Relative). Where Alias is associated with a concrete path using http:location/3 
and resolved using http_absolute_location/3. Relative 
can be a single atom or a term‘Segment1/Segment2/...`, where each 
element is either an atom or a variable. If a segment is a variable it 
matches any segment and the binding may be passed to the closure. If the 
last segment is a variable it may match multiple segments. This allows 
registering REST paths, for example:
:- http_handler(root(user/User), user(Method, User),
                [ method(Method),
                  methods([get,post,put])
                ]).
user(get, User, Request) :-
    ...
user(post, User, Request) :-
    ...
If an HTTP request arrives at the server that matches Path, Closure is called as below, where Request is the parsed HTTP request.
call(Closure, Request)
Options is a list containing the following options:
http_authenticate.pl 
provides a plugin for user/password based Basic HTTP 
authentication.Transfer-encoding: chunked if the client allows for it.true on a prefix-handler (see prefix), possible children 
are masked. This can be used to (temporary) overrule part of the tree.methods([Method]). Using method(*) allows for 
all methods.
:- http_handler(/, http_404([index('index.html')]),
                [spawn(my_pool),prefix]).
infinite, default or a positive number 
(seconds). If
default, the value from the setting http:time_limit 
is taken. The default of this setting is 300 (5 minutes). See
setting/2.Note that http_handler/3 is normally invoked as a directive and processed using term-expansion. Using term-expansion ensures proper update through make/0 when the specification is modified.
existence_error(http_location, Location) permission_error(http_method, Method, Location)