如何使用 Scotty / wai 设置 cookie?

How do I set a cookie with Scotty / wai?

我浏览了 Scotty 文档,但我只看到了设置 HTTP header 的能力,这似乎有点低级。

有没有更优雅的方法来实现这个?第三方库?

据我所知,一个解决方案是使用 Network.Wai.Util 中的 mapHeader。但是就像提到的那样,这似乎很低。

还有 cookie 包,但它似乎 return 一个完全呈现的 cookie 'string' 而不是能够检索 key/value.

还有:https://hackage.haskell.org/package/HTTP-4000.3.9/docs/Network-HTTP-Cookie.html但是好像没有Expiry参数?

https://hackage.haskell.org/package/scotty-cookie-0.1.0.3/docs/Web-Scotty-Cookie.html https://hackage.haskell.org/package/cookie-0.4.3/docs/Web-Cookie.html

import Web.Cookie
import Web.Scotty.Cookie

setCookie $ defaultSetCookie { setCookieName = "example", setCookieValue = "cookieValue" }

功能其实出奇的简单:

setCookie :: (Monad m, ScottyError e)
          => SetCookie
          -> ActionT e m ()
setCookie c = addHeader "Set-Cookie" (TL.decodeUtf8 . toLazyByteString $ renderSetCookie c)