欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Nest.js中使用HTTP五種數(shù)據(jù)傳輸方式小結(jié)

 更新時(shí)間:2023年05月28日 15:40:39   作者:1in  
本文主要介紹了Nest.js中使用HTTP五種數(shù)據(jù)傳輸方式小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

Nest.js作為JS的后端框架,是JS開發(fā)者邁向全棧的不錯(cuò)選擇,Nest.js也是企業(yè)中最流行的Node框架,它提供了IOC、AOP、微服務(wù)等架構(gòu)特性。
接下來就讓我們認(rèn)識(shí)一下Nest.js在HTTP五種數(shù)據(jù)傳輸方式中的使用。

Param

param 傳輸方式是通過url的參數(shù)傳遞,也是最常見的一種前端向后端傳遞參數(shù)的方式。
如果Nest后端接口這樣設(shè)置

@Controller('api/parma')
export class ParmaController {
  @Get(':id')
  urlParm(@Param('id') id: string) {
    return `id=${id}`;
  }
}

前端請(qǐng)求這樣請(qǐng)求

axios.get("http://localhost:3000/1in/parma/cdut")

那么,其中的cdut會(huì)被當(dāng)做parma參數(shù)被Nest截取,Nest也為我們提供了便捷的@Param裝飾器,使我們可以更便捷的提取param參數(shù)。

Query

query傳輸方式也是通過url的參數(shù)傳遞,但是他與parma略有不同。query傳輸方式需要做url encode
如果Nest后端接口這樣設(shè)置

@Controller('api/query')
export class QueryController { 
    @Get('find') query(@Query('name') name: string, @Query('age') age: number) 
    { return `name=${name},age=${age}`; } }

前端請(qǐng)求這樣請(qǐng)求

axios.get("http://localhost:3000/1in/query/",{
    name:"1in",
    age:20
})

因?yàn)閍xios會(huì)自動(dòng)幫我們url encode,所以我們不需要自己手動(dòng)url encode,在Nest中,我們通過@Query這個(gè)裝飾器來取到query參數(shù)。

Form urlencoded

與query不同的是,from urlencoded是通過post請(qǐng)求中的body來傳遞參數(shù),實(shí)際上,就是把query的參數(shù)放在body中。
需要注意的是我們需要在請(qǐng)求頭中設(shè)置'content-type': 'application/x-www-form-urlencoded'。

如果Nest后端接口這樣設(shè)置

@Controller('api/form-urlencoded') 
export class FormUrlencodedController { 
    @Post() body(@Body() body)
    { return `${JSON.stringify(body)}` } 
}

前端請(qǐng)求前,我們需要使用qs這個(gè)庫(kù)來做一下url encode

前端請(qǐng)求這樣請(qǐng)求

axios.post('http://localhost:3000/api/form-urlencoded',
    Qs.stringify({ name: '1in', age: 20 }), 
    { headers: { 'content-type': 'application/x-www-form-urlencoded' } });

在Nest中,我們可以通過@Body這個(gè)裝飾器來直接取到body中的內(nèi)容。

Json

與form urlencoded不同的是,json需要指定的content-type為application/json,也不需要url encode,同樣的也是通過post請(qǐng)求中的Body傳輸數(shù)據(jù)。

如果Nest后端接口這樣設(shè)置

@Controller('api/json')
export class JsonController {
    @Post()
    body(@Body() body) {
    return `received: ${JSON.stringify(createPersonDto)}`
    }
}

前端這樣請(qǐng)求

axios.post("http://localhost:3000/api/json",{
        name:"1in",
        age:20
    })

因?yàn)閍xios會(huì)幫我們?cè)O(shè)置content-type為application/json,所以不需要我們自動(dòng)設(shè)置,Nest同樣也是通過@Body裝飾器取到body中傳輸?shù)臄?shù)據(jù)。

Form data

form data是通過---------作為boundary傳輸?shù)膬?nèi)容,主要用于傳輸文件。

如果Nest后端接口這樣設(shè)置

import { AnyFilesInterceptor } from '@nestjs/platform-express';

@Controller('api/form-data')
export class FormDataController {
  @Post('file')
  @UseInterceptors(AnyFilesInterceptor())
  body2(@Body() body, @UploadedFiles() files: Array<Express.Multer.File>) {
    console.log(files);
    return `received: ${JSON.stringify(body)}`
  }
}

前端代碼使用 axios 發(fā)送 post 請(qǐng)求,指定 content type 為 multipart/form-data

前端請(qǐng)求是這樣的

<!DOCTYPE html>
<html lang="en">
<head>
? ? <script src="https://unpkg.com/axios@0.24.0/dist/axios.min.js"></script>
</head>
<body>
? ? <input id="updateFile" type="file" multiple/>
? ? <script>
? ? ? ? const fileInput = document.querySelector('#updateFile');
? ? ? ? async function formData() {
? ? ? ? ? ? const data = new FormData();
? ? ? ? ? ? data.set('name','1in');
? ? ? ? ? ? data.set('age', 20);
? ? ? ? ? ? data.set('file1', fileInput.files[0]);
? ? ? ? ? ? data.set('file2', fileInput.files[1]);
? ? ? ? ? ? const res = await axios.post('http://localhost:3000/api/form-data/file', data, {
? ? ? ? ? ? ? ? headers: { 'content-type': 'multipart/form-data' }
? ? ? ? ? ? });
? ? ? ? }
? ? ? ? fileInput.onchange = formData;
? ? </script>
</body>
</html>

form data通過 ----- 作為 boundary 分隔的數(shù)據(jù)。主要用于傳輸文件,在Nest中使用 FilesInterceptor 來處理其中的 binary 字段,用 @UseInterceptors 裝飾器來啟用,其余字段用 @Body 裝飾器來取。axios 發(fā)送請(qǐng)求時(shí),需要設(shè)置請(qǐng)求頭,指定 content type為 multipart/form-data,并且用 FormData 對(duì)象來封裝傳輸?shù)膬?nèi)容。

到此這篇關(guān)于Nest.js中使用HTTP五種數(shù)據(jù)傳輸方式小結(jié)的文章就介紹到這了,更多相關(guān)Nest.js HTTP數(shù)據(jù)傳輸內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • express框架下使用session的方法

    express框架下使用session的方法

    這篇文章主要介紹了express框架下使用session的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • node.js中的定時(shí)器nextTick()和setImmediate()區(qū)別分析

    node.js中的定時(shí)器nextTick()和setImmediate()區(qū)別分析

    本文介紹了node.js中的定時(shí)器nextTick()和setImmediate()的區(qū)別分析,非常的不錯(cuò),這里推薦給大家。
    2014-11-11
  • nodejs中簡(jiǎn)單實(shí)現(xiàn)Javascript Promise機(jī)制的實(shí)例

    nodejs中簡(jiǎn)單實(shí)現(xiàn)Javascript Promise機(jī)制的實(shí)例

    這篇文章主要介紹了nodejs中簡(jiǎn)單實(shí)現(xiàn)Javascript Promise機(jī)制的實(shí)例,本文在nodejs中簡(jiǎn)單實(shí)現(xiàn)一個(gè)promise/A 規(guī)范,需要的朋友可以參考下
    2014-12-12
  • node.js中的fs.chownSync方法使用說明

    node.js中的fs.chownSync方法使用說明

    這篇文章主要介紹了node.js中的fs.chownSync方法使用說明,本文介紹了fs.chownSync的方法說明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • nodejs實(shí)現(xiàn)郵件發(fā)送服務(wù)實(shí)例分享

    nodejs實(shí)現(xiàn)郵件發(fā)送服務(wù)實(shí)例分享

    本文給大家講解的是簡(jiǎn)單的使用nodejs搭建郵件發(fā)送服務(wù)的一個(gè)實(shí)例,非常的好用,有需要的小伙伴可以參考下
    2017-03-03
  • Node.js 中exports 和 module.exports 的區(qū)別

    Node.js 中exports 和 module.exports 的區(qū)別

    這篇文章主要介紹了Node.js 中exports 和 module.exports 的區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • node連接kafka2.0實(shí)現(xiàn)方法示例

    node連接kafka2.0實(shí)現(xiàn)方法示例

    這篇文章主要介紹了node連接kafka2.0,nodejs連接kafka2.0的實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了kafka2.0的功能、原理、以及node.js連接kafka2.0的具體實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2023-05-05
  • nodejs+mongodb+vue前后臺(tái)配置ueditor的示例代碼

    nodejs+mongodb+vue前后臺(tái)配置ueditor的示例代碼

    本篇文章主要介紹了nodejs+mongodb+vue前后臺(tái)配置ueditor的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • Node8中AsyncHooks異步生命周期

    Node8中AsyncHooks異步生命周期

    這篇文章主要介紹了Node8中AsyncHooks異步生命周期,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • npm 更改默認(rèn)全局路徑以及國(guó)內(nèi)鏡像的方法

    npm 更改默認(rèn)全局路徑以及國(guó)內(nèi)鏡像的方法

    今天小編就為大家分享一篇npm 更改默認(rèn)全局路徑以及國(guó)內(nèi)鏡像的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05

最新評(píng)論