查看源代码 httpd_util (inets v9.3.1)
用于实现 Erlang Web 服务器 API 模块的各种实用函数。
此模块为 Erlang Web 服务器 API 模块程序员提供了各种实用函数。
注意
请注意,该模块仅建议与 httpd 一起使用 - 对于其他情况,应将其视为已弃用。
另请参阅
摘要
函数
convert_request_date/1
将 DateString
转换为 Erlang 日期格式。DateString
必须是 RFC 2616 中定义的三个日期格式之一。
create_etag/1
根据文件的大小和上次修改时间计算文件的 Etag。FileInfo
是在 kernel/include/file.hrl
中定义的记录。
day/1
将星期几 (NthDayOfWeek
) 从整数 (1-7) 转换为缩写字符串,即
lookup_mime
返回与文件 mime.types
(位于配置目录中)中指定的特定文件后缀关联的 MIME 类型。
lookup_mime_default
返回与 mime.types
文件(位于配置目录中)中指定的特定文件后缀关联的 MIME 类型。如果未找到适当的关联,则返回 DefaultType
的值。
message/3
返回 HTML 格式的 HTTP 1.1 状态信息字符串。每个 StatusCode
都需要一个特定的 PhraseArgs
month/1
将月份 NthMonth
作为整数 (1-12) 转换为缩写字符串,即
multi_lookup
从 ETSTable
中提取所有 {Key, Value}
元组,并在列表中返回与 Key
关联的所有 Values
。
reason_phrase
返回 HTTP 1.1 StatusCode
的 Description
,例如,200 是“OK”,201 是“Created”。有关更多信息,请参阅 RFC 2616。
rfc1123_date/0
返回 RFC 1123 格式的当前日期。rfc_date/1
将 Erlang 格式的日期转换为 RFC 1123 日期格式。
split/3
使用 RegExp
将 String
分成 N
个块。split/3
等效于 re:split/3
,但 N
定义了 FieldList
中字段的最大数量。
split_path/1
将 RequestLine
分为文件引用 (Path
) 和 QueryString
或 PathInfo
字符串,如 RFC 2616 中所指定。QueryString
使用问号 (?
) 与 Path
隔离,PathInfo
使用斜杠 (/) 隔离。对于 QueryString
,?
之前的所有内容都是 Path
,?
之后的所有内容都是 QueryString
。对于 PathInfo
,从左到右扫描 RequestLine
,以查找作为文件或目录的最长可能的 Path
。最长可能的 Path
之后的所有内容,用 /
隔离,都被视为 PathInfo
split_script_path/1
等效于 split_path/1
,但有一个例外。如果最长的可能路径不是常规的、可访问的和可执行的文件,则返回 not_a_script
。
函数
-spec convert_request_date(DateString) -> ErlDate | bad_date when DateString :: string(), ErlDate :: calendar:datetime().
convert_request_date/1
将 DateString
转换为 Erlang 日期格式。DateString
必须是 RFC 2616 中定义的三个日期格式之一。
-spec create_etag(FileInfo) -> Etag when FileInfo :: file:file_info(), Etag :: string().
create_etag/1
根据文件的大小和上次修改时间计算文件的 Etag。FileInfo
是在 kernel/include/file.hrl
中定义的记录。
-spec day(NthDayOfWeek) -> DayOfWeek when NthDayOfWeek :: 1..7, DayOfWeek :: string().
day/1
将星期几 (NthDayOfWeek
) 从整数 (1-7) 转换为缩写字符串,即
1 = "Mon", 2 = "Tue", ..., 7 = "Sat".
-spec lookup(EtsTable, Key) -> Result when EtsTable :: ets:table(), Key :: term(), Result :: term() | undefined.
等效于 lookup/3
。
-spec lookup(EtsTable, Key, Undefined) -> Result when EtsTable :: ets:table(), Key :: term(), Undefined :: term(), Result :: term() | Undefined.
lookup
从 ETSTable
中提取 {Key, Value}
元组,并返回与 Key
关联的 Value
。如果 ETSTable
的类型为 bag
,则仅返回与 Key
关联的第一个 Value
。lookup/2
返回 undefined
,如果未找到 Value
,则 lookup/3
返回 Undefined
。
-spec lookup_mime(ConfigDB, Suffix) -> MimeType when ConfigDB :: ets:tid(), Suffix :: string(), MimeType :: string() | undefined.
等效于 lookup_mime/3
。
-spec lookup_mime(ConfigDB, Suffix, Undefined) -> MimeType when ConfigDB :: ets:tid(), Suffix :: string(), Undefined :: term(), MimeType :: string() | Undefined.
lookup_mime
返回与文件 mime.types
(位于配置目录中)中指定的特定文件后缀关联的 MIME 类型。
-spec lookup_mime_default(ConfigDB, Suffix, Undefined) -> MimeType when ConfigDB :: ets:tid(), Suffix :: string(), Undefined :: term(), MimeType :: string() | Undefined.
lookup_mime_default
返回与 mime.types
文件(位于配置目录中)中指定的特定文件后缀关联的 MIME 类型。如果未找到适当的关联,则返回 DefaultType
的值。
-spec message(StatusCode, PhraseArgs, ConfigDB) -> Message when StatusCode :: 301 | 304 | 400 | 401 | 403 | 404 | 408 | 412 | 413 | 414 | 500 | 501 | 503 | 504, PhraseArgs :: term(), ConfigDB :: ets:tid(), Message :: string().
message/3
返回 HTML 格式的 HTTP 1.1 状态信息字符串。每个 StatusCode
都需要一个特定的 PhraseArgs
-spec month(NthMonth) -> Month when NthMonth :: 1..12, Month :: string().
month/1
将月份 NthMonth
作为整数 (1-12) 转换为缩写字符串,即
1 = "Jan", 2 = "Feb", ..., 12 = "Dec".
-spec multi_lookup(EtsTable, Key) -> Result when EtsTable :: ets:tid(), Key :: term(), Result :: list() | [term()].
multi_lookup
从 ETSTable
中提取所有 {Key, Value}
元组,并在列表中返回与 Key
关联的所有 Values
。
-spec reason_phrase(StatusCode) -> Description when StatusCode :: 100 | 101 | 102 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 226 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 422 | 423 | 424 | 425 | 426 | 500 | 501 | 502 | 503 | 504 | 505 | 507, Description :: string().
reason_phrase
返回 HTTP 1.1 StatusCode
的 Description
,例如,200 是“OK”,201 是“Created”。有关更多信息,请参阅 RFC 2616。
-spec rfc1123_date() -> RFC1123Date when RFC1123Date :: string().
等效于 rfc1123_date/1
。
-spec rfc1123_date(LocalTime) -> RFC1123Date when LocalTime :: calendar:datetime() | undefined, RFC1123Date :: string() | undefined.
rfc1123_date/0
返回 RFC 1123 格式的当前日期。rfc_date/1
将 Erlang 格式的日期转换为 RFC 1123 日期格式。
-spec split(String, RegExp, N) -> SplitRes when String :: string(), RegExp :: string(), N :: non_neg_integer(), SplitRes :: {ok, FieldList} | {error, term()}, FieldList :: [string()].
split/3
使用 RegExp
将 String
分成 N
个块。split/3
等效于 re:split/3
,但 N
定义了 FieldList
中字段的最大数量。
-spec split_path(URIString) -> {Path, QueryStringOrPathInfo} when URIString :: string(), Path :: string(), QueryStringOrPathInfo :: string().
split_path/1
将 RequestLine
分为文件引用 (Path
) 和 QueryString
或 PathInfo
字符串,如 RFC 2616 中所指定。QueryString
使用问号 (?
) 与 Path
隔离,PathInfo
使用斜杠 (/) 隔离。对于 QueryString
,?
之前的所有内容都是 Path
,?
之后的所有内容都是 QueryString
。对于 PathInfo
,从左到右扫描 RequestLine
,以查找作为文件或目录的最长可能的 Path
。最长可能的 Path
之后的所有内容,用 /
隔离,都被视为 PathInfo
-spec split_script_path(URIString) -> Split when URIString :: string(), Split :: not_a_script | {Path, {PathInfo, QueryString}} | {Path, []}, Path :: string(), QueryString :: string(), PathInfo :: string().
split_script_path/1
等效于 split_path/1
,但有一个例外。如果最长的可能路径不是常规的、可访问的和可执行的文件,则返回 not_a_script
。