On this page:
url->path/  c

2.2 Mapping URLs to Paths🔗

This module provides a means of mapping URLs to paths on the filesystem.

This contract is equivalent to (->* (url?) (path? (listof path-piece?))). The returned path? is the path on disk. The list is the list of path elements that correspond to the path of the URL.


(make-url->path base)  url->path/c

  base : path-string?
The url->path/c returned by this procedure considers the root URL to be base. It ensures that ".."s in the URL do not escape the base and removes them silently otherwise.


(make-url->valid-path url->path)  url->path/c

  url->path : url->path/c
Runs the underlying url->path, but only returns if the path refers to a file that actually exists. If it is does not, then the suffix elements of the URL are removed until a file is found. If this never occurs, then an error is thrown.

This is primarily useful for dispatchers that allow path information after the name of a service to be used for data, but where the service is represented by a file. The most prominent example is obviously servlets.


(filter-url->path regex url->path)  url->path/c

  regex : regexp?
  url->path : url->path/c
Runs the underlying url->path but will only return if the path, when considered as a string, matches the regex. This is useful to disallow strange files, like GIFs, from being considered servlets when using the servlet dispatchers. It will return a exn:fail:filesystem:exists? exception if the path does not match.