在Web開發(fā)中,HTTP請求有兩種方式:GET和POST。GET請求是直接在URL中傳參,而POST請求是通過請求體傳參。在前后端分離的架構(gòu)中,我們通常使用GET請求來獲取數(shù)據(jù)。使用GET請求傳遞JSON參數(shù)時,需要將JSON對象序列化為字符串,并將其作為URL參數(shù)傳遞。
// JSON對象 var param = { name: 'Tom', age: 26 }; // 序列化JSON對象 var str = JSON.stringify(param); // 拼接URL參數(shù) var url = '/api/userInfo?' + encodeURIComponent(str); // 發(fā)送GET請求 fetch(url, { method: 'GET' }).then(response =>{ return response.json(); }).then(data =>{ console.log(data); });
在代碼中,我們首先定義了一個JSON對象param,然后將它序列化為字符串str。接著,我們使用encodeURIComponent函數(shù)對字符串進(jìn)行編碼,以避免特殊字符對URL的影響。最后,將編碼后的字符串作為URL參數(shù)拼接到請求URL中,通過fetch函數(shù)發(fā)送GET請求。在服務(wù)器端,我們需要解析URL參數(shù),并將其轉(zhuǎn)化為JSON對象,以獲取參數(shù)。
// Node.js服務(wù)器例子 var http = require('http'); var url = require('url'); http.createServer(function (req, res) { var queryObj = url.parse(req.url, true).query; var paramStr = decodeURIComponent(queryObj.param); var paramObj = JSON.parse(paramStr); res.writeHead(200, {'Content-Type': 'application/json'}); res.end(JSON.stringify(paramObj)); }).listen(8080);
在服務(wù)器端,首先使用url模塊解析URL參數(shù),將其作為queryObj對象返回。然后,使用decodeURIComponent函數(shù)對URL參數(shù)進(jìn)行解碼,并使用JSON.parse函數(shù)將其轉(zhuǎn)化為JSON對象paramObj,以獲取參數(shù)。最后,使用JSON.stringify函數(shù)將paramObj對象轉(zhuǎn)化為字符串,并作為響應(yīng)體返回給客戶端。