On this page:

2.12 Serving Files

The web-server/dispatchers/dispatch-files module allows files to be served. It defines a dispatcher construction procedure.


(make #:url->path url->path    
  [#:path->mime-type path->mime-type    
  #:indices indices])  dispatcher/c
  url->path : url->path/c
  path->mime-type : (path? . -> . (or/c false/c bytes)?)
   = (lambda (path) #f)
  indices : (listof string?) = (list "index.html" "index.htm")
Uses url->path to extract a path from the URL in the request object. If this path does not exist, then the dispatcher does not apply and next-dispatcher is invoked. If the path is a directory, then the indices are checked in order for an index file to serve. In that case, or in the case of a path that is a file already, path->mime-type is consulted for the MIME Type of the path. The file is then streamed out the connection object.

This dispatcher supports HTTP Range GET requests and HEAD requests. If the request’s method is neither HEAD nor GET, next-dispatcher will be called.

If the path works out to something on disk (either as a file, or, if the path refers to directory, one of the specified indices files in that directory), it needs to be readable by the process that is running the web server. Existing but unreadable files are handled as non-existing files.

Changed in version 1.7 of package web-server-lib: Support for non-{GET,HEAD} requests.
Changed in version 1.7: Treat unreadable files as non-existing files.