最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nodejs之koa2請(qǐng)求示例(GET,POST)

 更新時(shí)間:2018年08月07日 14:36:25   作者:騎烏龜賽跑  
本篇文章主要介紹了nodejs之koa2請(qǐng)求示例(GET,POST),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

GET 請(qǐng)求

在 koa 中,GET請(qǐng)求獲取請(qǐng)求數(shù)據(jù)request對(duì)象中的 query 方法和 querystring 方法, query方法返回的是格式化好的參數(shù),querystring 方法返回的是請(qǐng)求字符串。廢話不多說,直接上代碼

app.js 中添加如下代碼:

router.get('/getData', async (ctx,next) => {
  // 從上下文的request對(duì)象中獲取
  let request = ctx.request;
  let req_query = request.query; // 獲取格式化參數(shù)
  let req_querystring = request.querystring; // 獲取字符串

  // 從上下文中直接獲取
  let ctx_query = ctx.query;
  let ctx_querystring = ctx.querystring;
  let obj = {
    req_query:req_query,
    req_querystring:req_querystring,
    ctx_query:ctx_query,
    ctx_querystring:ctx_querystring
  };
  ctx.response.body = {status:200,msg:'這是get測(cè)試的返回?cái)?shù)據(jù)',data:obj};
});

在index.html中引入jquery,因?yàn)橛胘query的ajax,然后添加如下代碼:

var getTest = () => {
  $.ajax({
    type:'GET',
    url:'/getData?a=1&b=2&c=3',
    dataType:'json',
    success(data){
      console.log(data);
    },
    error (err){
      console.log(err);
    }
  });
}
// 添加一個(gè)按鈕
<button onclick="getTest()">點(diǎn)擊測(cè)試get方法</button>

運(yùn)行項(xiàng)目,點(diǎn)擊按鈕之后控制臺(tái)回打印出數(shù)據(jù),結(jié)果如下

POST 請(qǐng)求

因?yàn)?koa 沒有對(duì) post 請(qǐng)求獲取參數(shù)進(jìn)行封裝,所以需要通過原生的 nodejs 請(qǐng)求對(duì)象 req,將 post 請(qǐng)求數(shù)據(jù)解析成 string(例如:a=1&b=2&c=3),
再將 string 解析成 json 格式(例如:{“a”:”1”, “b”:”2”, “c”:”3”})

app.js 中添加如下代碼:

router.post('/postData',async (ctx,next) => {
  let postData = await parsePostData(ctx);
  console.log(postData);
  ctx.response.body = {status:200,msg:'這是post測(cè)試的返回?cái)?shù)據(jù)',data: postData};
});

// 解析上下文里node原生請(qǐng)求的POST參數(shù)
function parsePostData( ctx ) {
  return new Promise((resolve, reject) => {
    try {
      let postdata = "";
      ctx.req.addListener('data', (data) => {
        postdata += data
      })
      ctx.req.addListener("end",function(){
        let parseData = parseQueryStr( postdata )
        resolve( parseData )
      })
    } catch ( err ) {
      reject(err)
    }
  })
}

// 將POST請(qǐng)求參數(shù)字符串解析成JSON
function parseQueryStr( queryStr ) {
  let queryData = {}
  let queryStrList = queryStr.split('&')
  console.log( queryStrList )
  for ( let [ index, queryStr ] of queryStrList.entries() ) {
    let itemList = queryStr.split('=')
    queryData[ itemList[0] ] = decodeURIComponent(itemList[1])
  }
  return queryData
}

index.html中添加如下代碼:

var postTest = () => {
  let obj = {
    name:'啦啦啦',
    description:'我是賣報(bào)的小行家'
  };
  $.ajax({
    type:'POST',
    url:'/postData',
    dataType:'json',
    data:obj,
    success(data){
      console.log(data);
    },
    error (err){
      console.log(err);
    }
  });
}
// 添加一個(gè)post請(qǐng)求的按鈕
<button onclick="postTest()">點(diǎn)擊測(cè)試post方法</button>

運(yùn)行,點(diǎn)擊按鈕之后會(huì)打印出如下數(shù)據(jù)

對(duì)于一個(gè)用慣了 express 的我來說,這樣的 post 獲取參數(shù)方式令我非常的不爽,還好,koa-bodyparser 中間件解決了這個(gè)問題

koa-bodyparser

安裝

npm i koa-bodyparser –save

app.js 中引入模塊

// 引入模塊
const bodyParser = require('koa-bodyparser');
// 掛載到app
app.use(bodyParser());

然后將 post 方法更改為

router.post('/postData',async (ctx,next) => {
  let postData = ctx.request.body;
  ctx.response.body = {status:200,msg:'這是post測(cè)試的返回?cái)?shù)據(jù)',data: postData};
});

這樣就簡(jiǎn)單的太多了,感覺賞心悅目,其結(jié)果跟上面的是一樣的。

至此,koa 請(qǐng)求方法介紹完畢,可以愉快的寫代碼了,下一篇,小弟就記錄一下koa的錯(cuò)誤處理。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • nodejs開發(fā)微信小程序?qū)崿F(xiàn)密碼加密

    nodejs開發(fā)微信小程序?qū)崿F(xiàn)密碼加密

    本文給大家分享的是在使用nodejs開發(fā)微信小程序的過程中,實(shí)現(xiàn)密碼加密的示例代碼,非常簡(jiǎn)單,有需要的小伙伴可以參考下
    2017-07-07
  • node.js使用免費(fèi)的阿里云ip查詢獲取ip所在地【推薦】

    node.js使用免費(fèi)的阿里云ip查詢獲取ip所在地【推薦】

    這篇文章主要介紹了node.js使用免費(fèi)的阿里云ip查詢獲取ip所在地的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2018-09-09
  • 在nodejs中創(chuàng)建child process的方法

    在nodejs中創(chuàng)建child process的方法

    這篇文章主要介紹了在nodejs中創(chuàng)建child process的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Node.js Process對(duì)象詳解

    Node.js Process對(duì)象詳解

    本文詳細(xì)講解了Node.js Process對(duì)象,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • Node.js中的HTTP模塊與URL模塊

    Node.js中的HTTP模塊與URL模塊

    這篇文章介紹了Node.js中的HTTP模塊與URL模塊,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • Node發(fā)出HTTP POST請(qǐng)求的方法實(shí)例小結(jié)

    Node發(fā)出HTTP POST請(qǐng)求的方法實(shí)例小結(jié)

    這篇文章主要介紹了Node發(fā)出HTTP POST請(qǐng)求的方法,結(jié)合實(shí)例形式總結(jié)分析了三種常用的post請(qǐng)求操作方法,以及相關(guān)庫操作注意事項(xiàng),需要的朋友可以參考下
    2023-05-05
  • Ubuntu中搭建Nodejs開發(fā)環(huán)境過程分享

    Ubuntu中搭建Nodejs開發(fā)環(huán)境過程分享

    這篇文章主要介紹了Ubuntu中搭建Nodejs開發(fā)環(huán)境過程,比較郁悶的是apt-get安裝失敗了,如果有遇到一樣問題的朋友,可以參考一下本文
    2014-06-06
  • 總結(jié)幾道關(guān)于Node.js的面試問題

    總結(jié)幾道關(guān)于Node.js的面試問題

    這篇文章主要總結(jié)了幾道關(guān)于Node.js的面試問題,通過這些問題就來判斷一個(gè)人的Node.js水平是不太嚴(yán)謹(jǐn)?shù)?,但是它能讓你?duì)面試者在Node.js上的經(jīng)驗(yàn)如何有個(gè)大概的了解。有需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • node將geojson轉(zhuǎn)shp返回給前端的實(shí)現(xiàn)方法

    node將geojson轉(zhuǎn)shp返回給前端的實(shí)現(xiàn)方法

    這篇文章主要介紹了node將geojson轉(zhuǎn)shp返回給前端的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 總結(jié)Node.js中的一些錯(cuò)誤類型

    總結(jié)Node.js中的一些錯(cuò)誤類型

    NodeJS 的錯(cuò)誤處理讓人痛苦,在很長的一段時(shí)間里,大量的錯(cuò)誤被放任不管。但是要想建立一個(gè)健壯的 Node.js 程序就必須正確的處理這些錯(cuò)誤,而且這并不難學(xué)。下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)。
    2016-08-08

最新評(píng)論

涪陵区| 灌云县| 达拉特旗| 从江县| 临泉县| 庐江县| 铁力市| 宝清县| 宜兰市| 黔南| 都江堰市| 永仁县| 五莲县| 东乌珠穆沁旗| 吉隆县| 普兰县| 云霄县| 海兴县| 昌吉市| 平阴县| 江城| 龙海市| 精河县| 宿州市| 蓬溪县| 本溪市| 临夏市| 汝阳县| 屯留县| 仙桃市| 个旧市| 巨鹿县| 齐河县| 永昌县| 上犹县| 资源县| 吉隆县| 额敏县| 河西区| 万载县| 商丘市|