Erlang 编程/使用 yaws 创建 Web 应用程序/Arg 结构
外观
Arg 数据结构是服务器用来向 Web 应用程序转发基本信息的主要机制。在yaws_api.hrl 中定义 #arg 记录,定义如下
-record(arg, { clisock, %% the socket leading to the peer client client_ip_port, %% {Ip, Port} for the client headers, %% headers req, %% request clidata, %% The client data (as a binary in POST requests) server_path, %% The normalized server path querydata, %% Was the URL on the form of ...?query (GET reqs) appmoddata, %% the remainder of the path leading up to the query docroot, %% where's the data fullpath, %% full deep path to yaws file cont, %% Continuation for chunked multipart uploads state, %% State for use by users of the out/1 callback pid, %% pid of the yaws worker process opaque, %% useful to pass static data appmod_prepath, %% path in front of: <appmod><appmoddata> pathinfo %% Set to 'd/e' when calling c.yaws for the request %% http://some.host/a/b/c.yaws/d/e }).
Arg 结构中的一些参数包含其他信息,如下所示。
-record(headers, { connection, accept, host, if_modified_since, if_match, if_none_match, if_range, if_unmodified_since, range, referer, user_agent, accept_ranges, cookie = [], keep_alive, content_length, authorization, other = [] %% misc other headers }).