nodejs之koa2請求示例(GET,POST)
GET 請求
在 koa 中,GET請求獲取請求數(shù)據(jù)request對象中的 query 方法和 querystring 方法, query方法返回的是格式化好的參數(shù),querystring 方法返回的是請求字符串。廢話不多說,直接上代碼
app.js 中添加如下代碼:
router.get('/getData', async (ctx,next) => {
// 從上下文的request對象中獲取
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測試的返回數(shù)據(jù)',data:obj};
});
在index.html中引入jquery,因為用jquery的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);
}
});
}
// 添加一個按鈕
<button onclick="getTest()">點擊測試get方法</button>
運行項目,點擊按鈕之后控制臺回打印出數(shù)據(jù),結果如下

POST 請求
因為 koa 沒有對 post 請求獲取參數(shù)進行封裝,所以需要通過原生的 nodejs 請求對象 req,將 post 請求數(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測試的返回數(shù)據(jù)',data: postData};
});
// 解析上下文里node原生請求的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請求參數(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:'我是賣報的小行家'
};
$.ajax({
type:'POST',
url:'/postData',
dataType:'json',
data:obj,
success(data){
console.log(data);
},
error (err){
console.log(err);
}
});
}
// 添加一個post請求的按鈕
<button onclick="postTest()">點擊測試post方法</button>
運行,點擊按鈕之后會打印出如下數(shù)據(jù)

對于一個用慣了 express 的我來說,這樣的 post 獲取參數(shù)方式令我非常的不爽,還好,koa-bodyparser 中間件解決了這個問題
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測試的返回數(shù)據(jù)',data: postData};
});
這樣就簡單的太多了,感覺賞心悅目,其結果跟上面的是一樣的。
至此,koa 請求方法介紹完畢,可以愉快的寫代碼了,下一篇,小弟就記錄一下koa的錯誤處理。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
node.js使用免費的阿里云ip查詢獲取ip所在地【推薦】
這篇文章主要介紹了node.js使用免費的阿里云ip查詢獲取ip所在地的相關知識,非常不錯,具有一定的參考借鑒價值 ,需要的朋友可以參考下2018-09-09
在nodejs中創(chuàng)建child process的方法
這篇文章主要介紹了在nodejs中創(chuàng)建child process的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01
Ubuntu中搭建Nodejs開發(fā)環(huán)境過程分享
這篇文章主要介紹了Ubuntu中搭建Nodejs開發(fā)環(huán)境過程,比較郁悶的是apt-get安裝失敗了,如果有遇到一樣問題的朋友,可以參考一下本文2014-06-06
node將geojson轉shp返回給前端的實現(xiàn)方法
這篇文章主要介紹了node將geojson轉shp返回給前端的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-05-05

