3.2 library(http/http_dispatch): Dispatch requests in the HTTP server
AllApplicationManualNameSummaryHelp

  • Documentation
    • Reference manual
    • Packages
      • SWI-Prolog HTTP support
        • The HTTP server libraries
          • library(http/http_dispatch): Dispatch requests in the HTTP server
            • http_handler/3
            • http_delete_handler/1
            • http_dispatch/1
            • http_request_expansion/2
            • http_current_handler/2
            • http_current_handler/3
            • http_location_by_id/2
            • http_link_to_id/3
            • http_reload_with_parameters/3
            • http_reply_file/3
            • http_safe_file/2
            • http_redirect/3
            • http_404/2
            • http_switch_protocol/2
Availability::- use_module(library(http/http_dispatch)).
Source[det]http_location_by_id(+ID, -Location)
True when Location represents the HTTP path to which the handler with identifier ID is bound. Handler identifiers are deduced from the http_handler/3 declaration as follows:
Explicit id
If a term id(ID) appears in the option list of the handler, ID it is used and takes preference over using the predicate.
Using the handler predicate
ID matches a handler if the predicate name matches ID. The ID may have a module qualification, e.g., Module:Pred

If the handler is declared with a pattern, e.g., root(user/User), the location to access a particular user may be accessed using e.g., user('Bob'). The number of arguments to the compound term must match the number of variables in the path pattern.

A plain atom ID can be used to find a handler with a pattern. The returned location is the path up to the first variable, e.g., /user/ in the example above.

User code is adviced to use http_link_to_id/3 which can also add query parameters to the URL. This predicate is a helper for http_link_to_id/3.

Errors
existence_error(http_handler_id, Id).
See also
http_link_to_id/3 and the library(http/html_write) construct location_by_id(ID) or its abbreviation #(ID)