国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

NodeJS收發GET和POST請求的示例代碼

2019-11-19 15:40:31
字體:
來源:轉載
供稿:網友

本文介紹了NodeJS收發GET和POST請求的示例代碼,分享給大家,也給自己留個筆記

一 express框架接收

app.get('/',function(req,res) {  var url = req.query.url;  var name = req.query.name;  console.log(url, name);}); 

二 接收Get

1. get參數在req.url上

2. 使用url.parse將數據由字符串轉變為obj

index.js:

var http = require('http');var url = require('url');var util = require('util'); //req 請求信息  res返回信息http.createServer(function(req, res){  res.writeHeader(200, {'Content-Type':'text/javascript;charset=UTF-8'}); //狀態碼+響應頭屬性   // 解析 url 參數  var params = url.parse(req.url, true).query; //parse將字符串轉成對象,req.url="/?url=123&name=321",true表示params是{url:"123",name:"321"},false表示params是url=123&name=321  res.write("網站名:" + params.name);  res.write("/n");  res.write("網站 URL:" + params.url);  res.end(); }).listen(3000); 

瀏覽器打開:http://127.0.0.1:3000/?url=123&name=321

網頁顯示:

網站名:321

網站 URL:123

三 發送Get

index.js:

var http = require('http');   var qs = require('querystring');   var data = {   a: 123,   time: new Date().getTime()};//這是需要提交的數據     var content = qs.stringify(data);   var options = {   hostname: '127.0.0.1',   port: 10086,   path: '/pay/pay_callback?' + content,   method: 'GET' };   var req = http.request(options, function (res) {   console.log('STATUS: ' + res.statusCode);   console.log('HEADERS: ' + JSON.stringify(res.headers));   res.setEncoding('utf8');   res.on('data', function (chunk) {     console.log('BODY: ' + chunk);   }); });   req.on('error', function (e) {   console.log('problem with request: ' + e.message); });   req.end(); 

四 接收Post

 當請求這個頁面時,如果post數據中沒有name和url,則返回一個提交頁面;如果有name和url,則打印。

1. post請求會觸發"data"事件。

2. chuck使用+=保存,因為會額外請求favicon.ico,導致body={}。

3. 請求結束,會觸發"end"事件。將chuck反序列化querystring.parse(body)為對象數組, 使用body.name訪問post變量。

index.js:

var http = require('http');var querystring = require('querystring'); var postHTML =  '<html><head><meta charset="utf-8"><title>菜鳥教程 Node.js 實例</title></head>' +  '<body>' +  '<form method="post">' +  '網站名: <input name="name"><br>' +  '網站 URL: <input name="url"><br>' +  '<input type="submit">' +  '</form>' +  '</body></html>'; http.createServer(function (req, res) {  //暫存請求體信息  var body = "";   //請求鏈接  console.log(req.url);   //每當接收到請求體數據,累加到post中  req.on('data', function (chunk) {    body += chunk; //一定要使用+=,如果body=chunk,因為請求favicon.ico,body會等于{}    console.log("chunk:",chunk);  });   //在end事件觸發后,通過querystring.parse將post解析為真正的POST請求格式,然后向客戶端返回。  req.on('end', function () {    // 解析參數    body = querystring.parse(body); //將一個字符串反序列化為一個對象    console.log("body:",body);    // 設置響應頭部信息及編碼/<br><br>   res.writeHead(200, {'Content-Type': 'text/html; charset=utf8'});      if(body.name && body.url) { // 輸出提交的數據      res.write("網站名:" + body.name);      res.write("<br>");      res.write("網站 URL:" + body.url);    } else { // 輸出表單      res.write(postHTML);    }    res.end();  });}).listen(3000); 

瀏覽器中打開:http://127.0.0.1:3000/

第一次訪問127.0.0.1,post中沒有name和url,顯示提交頁面。

點擊提交后,網頁會打印出如下結果。

問題:

1. req.on("end"事件會多次觸發。因為會請求favicon.ico。

2.  res.writeHead(200, {'Content-Type': 'text/html; charset=utf8'});

text/html的意思是將文件的content-type設置為text/html的形式,瀏覽器在獲取到這種文件時會自動調用html的解析器對文件進行相應的處理。

text/plain的意思是將文件設置為純文本的形式,瀏覽器在獲取到這種文件時并不會對其進行處理。

五 發送Post

index.js:

var http = require('http');var querystring = require('querystring'); var contents = querystring.stringify({  name:'byvoid',  email:'byvoid@byvoid.com',  address:'Zijing'}); var options = {  host:'www.byvoid.com',  path:'/application/node/post.php',  method:'POST',  headers:{    'Content-Type':'application/x-www-form-urlendcoded',    'Content-Length':contents.length  }} var req = http.request(options, function(res){  res.setEncoding('utf8');  res.on('data',function(data){    console.log("data:",data);  //一段html代碼  });}); req.write(contents);req.end; 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁安市| 临澧县| 丰镇市| 兰西县| 喜德县| 庆元县| 喀喇| 滨州市| 卓尼县| 鄯善县| 南涧| 光泽县| 桐城市| 保德县| 广河县| 樟树市| 庆元县| 红原县| 东阳市| 璧山县| 平陆县| 广丰县| 虞城县| 区。| 新绛县| 睢宁县| 五莲县| 玉屏| 温宿县| 内乡县| 江都市| 九台市| 承德县| 遵化市| 宕昌县| 潍坊市| 吉首市| 信宜市| 宁波市| 衡南县| 鄱阳县|