Oat++项目中如何获取请求的Cookie键值对?
对应你在Quart中使用request.cookies.get()获取Cookie的逻辑,Oat++提供了两种简洁的方式来获取请求中的Cookie键值对:
1. 直接获取单个Cookie
通过请求对象的getCookie()方法可以直接获取指定名称的Cookie值,若Cookie不存在则返回空的oatpp::String:
ENDPOINT("GET", "/your-endpoint", yourHandler) { // 获取指定名称的Cookie oatpp::String retrieved_token = request->getCookie("COOKIE_TOKEN"); oatpp::String retrieved_username = request->getCookie("COOKIE_USER"); // 后续业务逻辑处理... return createResponse(Status::CODE_200, "Success"); }
2. 获取全部Cookie的键值对Map
如果你需要一次性获取所有Cookie,可以通过getCookies()方法拿到完整的Cookie映射表,再从中取出目标值:
ENDPOINT("GET", "/your-endpoint", yourHandler) { // 获取所有Cookie的映射 const auto& cookie_map = request->getCookies(); // 从映射表中取值 oatpp::String retrieved_token = cookie_map.get("COOKIE_TOKEN"); oatpp::String retrieved_username = cookie_map.get("COOKIE_USER"); // 后续业务逻辑处理... return createResponse(Status::CODE_200, "Success"); }
关于设置Cookie的补充
正如你了解的,Oat++中设置Cookie是通过向响应头添加Set-Cookie字段实现的,示例代码如下:
ENDPOINT("GET", "/set-cookies", setCookiesHandler) { auto response = createResponse(Status::CODE_200, "Cookies set"); // 添加Cookie,可附带Path、HttpOnly、Max-Age等属性 response->putHeader("Set-Cookie", "COOKIE_TOKEN=your_token_value; Path=/; HttpOnly"); response->putHeader("Set-Cookie", "COOKIE_USER=your_username; Path=/; Max-Age=86400"); return response; }
内容的提问来源于stack exchange,提问作者Swatcat
相关产品推荐
相关产品推荐

