documentation
This commit is contained in:
60
scrbl/mimetypes.scrbl
Normal file
60
scrbl/mimetypes.scrbl
Normal file
@@ -0,0 +1,60 @@
|
||||
#lang scribble/manual
|
||||
|
||||
@(require racket/base
|
||||
scribble/core
|
||||
(for-label racket/base
|
||||
racket/string
|
||||
racket/file))
|
||||
|
||||
@title{mimetypes}
|
||||
@author[@author+email["Hans Dijkema" "hans@dijkewijk.nl"]]
|
||||
|
||||
@defmodule[mimetypes]
|
||||
|
||||
MIME type utilities used by the webview library.
|
||||
|
||||
This module provides a mapping from file extensions to MIME types together with
|
||||
a function to determine the MIME type of a file path.
|
||||
|
||||
@section{Overview}
|
||||
|
||||
The module is used by the local HTTPS server to determine the correct
|
||||
@tt{Content-Type} header when serving files.
|
||||
|
||||
MIME types are determined based on the file extension.
|
||||
|
||||
@section{Function: path->mimetype}
|
||||
|
||||
@defproc[(path->mimetype [p path-string?]) string?]{
|
||||
|
||||
Returns the MIME type associated with @racket[p].
|
||||
|
||||
The file extension of @racket[p] is extracted and used to look up the
|
||||
corresponding MIME type.
|
||||
|
||||
If the extension is not recognized, a default MIME type is returned.
|
||||
}
|
||||
|
||||
@section{Mapping}
|
||||
|
||||
The module contains a predefined mapping from file extensions to MIME types.
|
||||
|
||||
Typical mappings include:
|
||||
|
||||
@itemlist[#:style 'compact
|
||||
@item{@tt{.html} → @tt{text/html}}
|
||||
@item{@tt{.css} → @tt{text/css}}
|
||||
@item{@tt{.js} → @tt{application/javascript}}
|
||||
@item{@tt{.json} → @tt{application/json}}
|
||||
@item{@tt{.png} → @tt{image/png}}
|
||||
@item{@tt{.jpg}, @tt{.jpeg} → @tt{image/jpeg}}
|
||||
@item{@tt{.svg} → @tt{image/svg+xml}}]
|
||||
|
||||
The exact mapping is defined in the source code and can be extended if needed.
|
||||
|
||||
@section{Notes}
|
||||
|
||||
The returned MIME type is always a string suitable for use in HTTP response
|
||||
headers.
|
||||
|
||||
File extensions are interpreted case-insensitively.
|
||||
Reference in New Issue
Block a user