Cookie

package com.litongjava.tio.boot.hello.AController;

import com.litongjava.tio.http.common.Cookie;
import com.litongjava.tio.http.common.HttpRequest;
import com.litongjava.tio.http.common.HttpResponse;
import com.litongjava.tio.http.server.annotation.RequestPath;
import com.litongjava.tio.http.server.util.Resps;
@AController
@RequestPath("/test/cookie")
public class TestCookieController {

  @RequestPath("/index")
  public String index(HttpRequest request) {
    Cookie cookie = request.getCookie("access-token");
    if (cookie != null) {
      String accessToken = cookie.getValue();
      return accessToken;
    }
    return null;
  }

  @RequestPath("/set-cookie")
  public HttpResponse setCookie(HttpRequest request) {

    HttpResponse response = Resps.txt(request, "set-cookit");
    Cookie cookie = new Cookie(null, "access-token", "token-value", null);
    response.addCookie(cookie);
    return response;
  }

}

Cookie 构建方法

  /**
   * 创建一个 Cookie
   * @param domain  cookie的受控域
   * @param value   名称
   * @param value   值
   * @param maxAge  失效时间,单位秒
   * @return Cookie 对象
   */
  public Cookie(String domain, String name, String value, Long maxAge) {
    setName(name);
    setValue(value);
    setPath("/");
    setDomain(domain);
    setMaxAge(maxAge);
    setHttpOnly(false);
  }

这段代码定义了一个使用 tio-boot 框架的 HTTP 控制器,用于处理 /test/cookie 路径下的 Web 请求,并涉及 HTTP Cookie 的读取和设置。以下是对代码的部分解释:

  1. Method index:

    - 当 HTTP 请求发送到 `/test/cookie/index` 时,此方法将被调用。
    - 方法从 HTTP 请求中提取名为 `"access-token"` 的 Cookie。
    - 如果 Cookie 存在,方法返回 Cookie 的值;否则返回 `null`。
    
    
  2. Method setCookie:

    • 当 HTTP 请求发送到 /test/cookie/set-cookie 时,此方法将被调用。
    • 创建一个文本响应 "set-cookie"
    • 构造一个新的 Cookie 对象,名称为 "access-token",值为 "token-value",并将其添加到响应中。
    • 返回包含新设置的 Cookie 的响应对象。
  3. Cookie Constructor:

    • Cookie(String domain, String name, String value, Long maxAge): 构造器用于创建一个新的 Cookie 对象。参数包括域名、名称、值和最大有效期。
    • setCookie 方法中,创建的 Cookie 没有指定域名和最大有效期,这意味着它将被视为会话 Cookie,并且只在客户端与服务器的会话期间有效。

总结:TestCookieController 类是一个 tio-boot HTTP 控制器,它包含两个方法,一个用于读取请求中的特定 Cookie,另一个用于设置新的 Cookie 并将其发送回客户端。这使得该控制器可以在客户端和服务器之间有效地管理 Cookie 数据。