<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## `Cookies` 一個`HTTP cookie`是指存儲在用戶瀏覽器中的一小段數據。`Cookies`被設計為創建一種可靠的機制讓網站來記錄狀態信息。當用戶再次訪問網站時,發出的請求會自帶`cookie`。 ### 在`Express`中使用(默認) 首先安裝需要的包(以及`TypeScript`用戶需要的類型包): ```bash $ npm i cookie-parser $ npm i -D @types/cookie-parser ``` 安裝完成后,將`cookie-parser`配置為全局中間件(例如在`main.ts`文件中)。 ```TypeScript import * as cookieParser from 'cookie-parser'; // somewhere in your initialization file app.use(cookieParser()); ``` 可以向`cookieParser`中間件中傳遞一些參數: - `secret`: 一個字符串或者數組,用來給`cookie`簽名。如果不指定這個選項,將不解析簽名的`cookie`。如果提供了一個字符串,那么它會被用來作為`secret`。如果提供了一個數組,將嘗試依次使用其元素來作為`secret`解析`cookie`。 - `option`:一個作為第二個參數傳遞給`cookie.parse`的對象,參見`[cookie](https://www.npmjs.org/package/cookie)`來了解更多內容。 該中間件將從請求的頭文件中解析`Cookie`并將其數據作為`req.cookies`暴露出來。如果提供了`secret`,將暴露為`req.signedCookies`。這些屬性以`cookie`名稱和屬性的鍵值對保存。 當提供了`secret`時,該中間件將解析并驗證所有簽名的`cookie`并將其值從`req.cookies`移動到`req.signedCookies`。簽名`cookie`是指包含`s:`前綴的`cookie`。驗證失敗的簽名`cookie`值會被替換為`false`而不是被篡改過的值。 當這些完成后,就可以從路徑處理程序中讀取`cookie`了,例如: ```TypeScript @Get() findAll(@Req() request: Request) { console.log(request.cookies); // or "request.cookies['cookieKey']" // or console.log(request.signedCookies); } ``` > `@Req()`裝飾器從`@nestjs/common`中引入,`Request`從`express`中引入。 要在輸出的響應中附加`cookie`,使用`Response#cookie()`方法: ```TypeScript @Get() findAll(@Res({ passthrough: true }) response: Response) { response.cookie('key', 'value') } ``` > 如果你想把相應處理邏輯留給框架,需要將`passthrough`參數設置為`true`,如上所示。參見[這里](https://docs.nestjs.com/controllers#appendix-library-specific-approach) > `@Res()`裝飾器從`@nestjs/common`中引入,`Response`從`express`中引入。 ### 在`Fastify`中使用 首先安裝需要的包: ````bash npm i fastify-cookie ··· 安裝完成后,注冊`fastify-cookie`插件。 ```TypeScript import fastifyCookie from 'fastify-cookie'; // somewhere in your initialization file const app = await NestFactory.create<NestFastifyApplication>( AppModule, new FastifyAdapter(), ); app.register(fastifyCookie, { secret: 'my-secret', // for cookies signature }); ```` 當這些完成后,就可以從路徑處理程序中讀取`cookie`了,例如: ```TypeScript @Get() findAll(@Req() request: FastifyRequest) { console.log(request.cookies); // or "request.cookies['cookieKey']" } } ``` > `@Req()`裝飾器從`@nestjs/common`中引入,`FastifyRequest`從`fastify`中引入。 要在輸出的響應中附加`cookie`,使用`FastifyReply#setCookie()`方法: ```TypeScript @Get() findAll(@Res({ passthrough: true }) response: FastifyReply) { response.setCookie('key', 'value') } ``` 要了解更多`FastifyReply#setCookie()`,可參見[這里](https://github.com/fastify/fastify-cookie#sending)。 > 如果你想把相應處理邏輯留給框架,需要將`passthrough`參數設置為`true`,如上所示。參見[這里](https://docs.nestjs.com/controllers#appendix-library-specific-approach) > `@Res()`裝飾器從`@nestjs/common`中引入,`FastifyReply`從`fastify `中引入。 ### 創建一個自定義裝飾器(跨平臺) 可以創建一個自定義裝飾器,來提供一個方便易用、聲明清晰的方式來處理`cookie`。 ```TypeScript import { createParamDecorator, ExecutionContext } from '@nestjs/common'; export const Cookies = createParamDecorator( (data: string, ctx: ExecutionContext) => { const request = ctx.switchToHttp().getRequest(); return data ? request.cookies?.[data] : request.cookies; }, ); ``` 這個`@Cookie()`裝飾器將解析所有`cookie`,或者從`req.cookie`對象中解析一個命名的`cookie`并用其值來填充解析的參數。 現在就可以使用該裝飾器,從路徑處理程序中讀取`cookie`了,例如: ```TypeScript @Get() findAll(@Cookies('name') name: string) {} ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看