Cookie的使用是WEB开发中所必须掌握的知识点之一。HTTP请求本身是无状态的,要保持请求的状态就离不开Cookie。常见的应用比如购物车、登录等应用。
Yaws中使用Cookie是比较简单的。但其官方文档(yaws.pdf)没有做出简单的介绍,并且没有这两个函数的详细介绍,必须要阅读API文档来查找。
要在Yaws中使用Cookie,就是掌握两个API函数:
1.yaws_api:set_cookie/3
这个函数就是用来设置Cookie的,有三个参数:第一个是Cookie的名称,第二个是Cookie的值。它们全部用字符串形式的值。而第三个则是Cookie的选项列表,选项主要包括:
{expires,UtcTime},{max_age,Age},{path,Path},{domain,Domain},{comment,Comment},secure,http_only等。
要设置Cookie只要将这个函数的返回值放到out/1函数的输出中即可。
比如以下代码就是设置了一个Cookie,名称为name,其值为“Dark”:
<erl>
out(_) ->
Co = yaws_api:set_cookie("name","Dark",[]),
[{html,"Success!"},Co].
</erl>
2.yaws_api:find_cookie_val/2
用来取指定名称的Cookie中的值。第一个参数就是Cookie的名称;第二个可以是arg或(Arg#arg.headers)#headers.cookie,直接使用Arg当然更方便了,在API文档中居然就没有说到,我不知道是什么原因,我是通过查看源代码才看到的。
以下代码就是获取名称为name的cookie的值:
<erl>
out(Arg) ->
Name = yaws_api:find_cookie_val("name",Arg),
io:format("name:~p~n",[Name]),
{html,"Success!"}.
</erl>