# Cookie

可以通过 Cookie 类操作 cookie

# 读取

通过 request 对象获取:








 



import { Controller, Get, Request } from '@tiger/common'

@Controller('users')
export class User extends BaseController {
    @Get()
    index(request: Request) {
      const key = 'username';
      console.log(request.cookieValue(key))
    }
}

# 响应

cookie 是跟随响应一起发送的,我们我们需要将 Cookie 实例附加在响应对象上来设置 cookie







 
 
 
 



import { Controller, Get, Cookie, Response } from '@tiger/common'

@Controller('users')
export class User {
    @Get()
    index() {
      const cookie = new Cookie('username', 'tiger')
      return new Response().withCookie(cookie).success({
        data: 'im data'
      })
    }
}

response 对象上还添加了简便方法 cookie(name, value [, options]) 来设置 cookie







 
 
 



import { Controller, Get, Cookie, Response } from '@tiger/common'

@Controller('users')
export class User {
    @Get()
    index() {
      return new Response().cookie('username', 'tiger').OK({
        data: 'im data'
      })
    }
}

# 配置

框架提供了 cookie 的默认配置,配置文件位于 src/config/cookie.js,默认使用该配置文件的配置来设置 cookie:

也可以使用自定义配置作为参数传入构造函数:







 
 
 






import { Controller, Get, Cookie, Response } from '@tiger/common'

@Controller('users')
export class User {
    @Get()
    index() {
      const cookie = new Cookie('username', 'tiger', {
        // options
      })
      return new Response().withCookie(cookie).OK({
        data: 'im data'
      })
    }
}

单独设置 signed 配置后,获取 cookie 的时候需要传入一致的 signed 配置: this.request.cookieValue('username', { signed: false })