查看源代码 httpd_util (inets v9.3.1)

用于实现 Erlang Web 服务器 API 模块的各种实用函数。

此模块为 Erlang Web 服务器 API 模块程序员提供了各种实用函数。

注意

请注意,该模块仅建议与 httpd 一起使用 - 对于其他情况,应将其视为已弃用。

另请参阅

httpd

摘要

函数

convert_request_date/1DateString 转换为 Erlang 日期格式。DateString 必须是 RFC 2616 中定义的三个日期格式之一。

create_etag/1 根据文件的大小和上次修改时间计算文件的 Etag。FileInfo 是在 kernel/include/file.hrl 中定义的记录。

day/1 将星期几 (NthDayOfWeek) 从整数 (1-7) 转换为缩写字符串,即

lookupETSTable 中提取 {Key, Value} 元组,并返回与 Key 关联的 Value。如果 ETSTable 的类型为 bag,则仅返回与 Key 关联的第一个 Valuelookup/2 返回 undefined,如果未找到 Value,则 lookup/3 返回 Undefined

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_lookupETSTable 中提取所有 {Key, Value} 元组,并在列表中返回与 Key 关联的所有 Values

reason_phrase 返回 HTTP 1.1 StatusCodeDescription,例如,200 是“OK”,201 是“Created”。有关更多信息,请参阅 RFC 2616

rfc1123_date/0 返回 RFC 1123 格式的当前日期。rfc_date/1 将 Erlang 格式的日期转换为 RFC 1123 日期格式。

split/3 使用 RegExpString 分成 N 个块。split/3 等效于 re:split/3,但 N 定义了 FieldList 中字段的最大数量。

split_path/1RequestLine 分为文件引用 (Path) 和 QueryStringPathInfo 字符串,如 RFC 2616 中所指定。QueryString 使用问号 (?) 与 Path 隔离,PathInfo 使用斜杠 (/) 隔离。对于 QueryString? 之前的所有内容都是 Path? 之后的所有内容都是 QueryString。对于 PathInfo,从左到右扫描 RequestLine,以查找作为文件或目录的最长可能的 Path。最长可能的 Path 之后的所有内容,用 / 隔离,都被视为 PathInfo

split_script_path/1 等效于 split_path/1,但有一个例外。如果最长的可能路径不是常规的、可访问的和可执行的文件,则返回 not_a_script

函数

此函数的链接

convert_request_date(DateString)

查看源代码
-spec convert_request_date(DateString) -> ErlDate | bad_date
                              when DateString :: string(), ErlDate :: calendar:datetime().

convert_request_date/1DateString 转换为 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

此函数的链接

lookup(EtsTable, Key, Undefined)

查看源代码
-spec lookup(EtsTable, Key, Undefined) -> Result
                when
                    EtsTable :: ets:table(),
                    Key :: term(),
                    Undefined :: term(),
                    Result :: term() | Undefined.

lookupETSTable 中提取 {Key, Value} 元组,并返回与 Key 关联的 Value。如果 ETSTable 的类型为 bag,则仅返回与 Key 关联的第一个 Valuelookup/2 返回 undefined,如果未找到 Value,则 lookup/3 返回 Undefined

此函数的链接

lookup_mime(ConfigDB, Suffix)

查看源代码
-spec lookup_mime(ConfigDB, Suffix) -> MimeType
                     when ConfigDB :: ets:tid(), Suffix :: string(), MimeType :: string() | undefined.

等效于 lookup_mime/3

此函数的链接

lookup_mime(ConfigDB, Suffix, Undefined)

查看源代码
-spec lookup_mime(ConfigDB, Suffix, Undefined) -> MimeType
                     when
                         ConfigDB :: ets:tid(),
                         Suffix :: string(),
                         Undefined :: term(),
                         MimeType :: string() | Undefined.

lookup_mime 返回与文件 mime.types(位于配置目录中)中指定的特定文件后缀关联的 MIME 类型。

此函数的链接

lookup_mime_default(ConfigDB, Suffix)

查看源代码
-spec lookup_mime_default(ConfigDB, Suffix) -> MimeType
                             when
                                 ConfigDB :: ets:tid(),
                                 Suffix :: string(),
                                 MimeType :: string() | undefined.

等效于 lookup_mime_default/3

此函数的链接

lookup_mime_default(ConfigDB, Suffix, Undefined)

查看源代码
-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 的值。

此函数的链接

message(StatusCode, PhraseArgs, ConfigDB)

查看源代码
-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

  • 301 - string/0: 指向新文档位置的 URL。

  • 400 | 401 | 500 - none (没有 PhraseArgs)。

  • 403 | 404 - string/0: RFC 2616 中描述的 Request-URI

  • 501 - {Method, RequestURI, HTTPVersion}: RFC 2616 中定义的 HTTP MethodRequest-URIHTTP-Version

  • 504 - string/0: 描述服务不可用的原因的字符串。

-spec month(NthMonth) -> Month when NthMonth :: 1..12, Month :: string().

month/1 将月份 NthMonth 作为整数 (1-12) 转换为缩写字符串,即

1 = "Jan", 2 = "Feb", ..., 12 = "Dec".

此函数的链接

multi_lookup(EtsTable, Key)

查看源代码
-spec multi_lookup(EtsTable, Key) -> Result
                      when EtsTable :: ets:tid(), Key :: term(), Result :: list() | [term()].

multi_lookupETSTable 中提取所有 {Key, Value} 元组,并在列表中返回与 Key 关联的所有 Values

此函数的链接

reason_phrase(StatusCode)

查看源代码
-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 StatusCodeDescription,例如,200 是“OK”,201 是“Created”。有关更多信息,请参阅 RFC 2616

-spec rfc1123_date() -> RFC1123Date when RFC1123Date :: string().

等效于 rfc1123_date/1

此函数的链接

rfc1123_date(LocalTime)

查看源代码
-spec rfc1123_date(LocalTime) -> RFC1123Date
                      when
                          LocalTime :: calendar:datetime() | undefined,
                          RFC1123Date :: string() | undefined.

rfc1123_date/0 返回 RFC 1123 格式的当前日期。rfc_date/1 将 Erlang 格式的日期转换为 RFC 1123 日期格式。

此函数的链接

split(String, RegExp, N)

查看源代码
-spec split(String, RegExp, N) -> SplitRes
               when
                   String :: string(),
                   RegExp :: string(),
                   N :: non_neg_integer(),
                   SplitRes :: {ok, FieldList} | {error, term()},
                   FieldList :: [string()].

split/3 使用 RegExpString 分成 N 个块。split/3 等效于 re:split/3,但 N 定义了 FieldList 中字段的最大数量。

-spec split_path(URIString) -> {Path, QueryStringOrPathInfo}
                    when URIString :: string(), Path :: string(), QueryStringOrPathInfo :: string().

split_path/1RequestLine 分为文件引用 (Path) 和 QueryStringPathInfo 字符串,如 RFC 2616 中所指定。QueryString 使用问号 (?) 与 Path 隔离,PathInfo 使用斜杠 (/) 隔离。对于 QueryString? 之前的所有内容都是 Path? 之后的所有内容都是 QueryString。对于 PathInfo,从左到右扫描 RequestLine,以查找作为文件或目录的最长可能的 Path。最长可能的 Path 之后的所有内容,用 / 隔离,都被视为 PathInfo

此函数的链接

split_script_path(URIString)

查看源代码
-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