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

node.js中express模塊創(chuàng)建服務(wù)器和http模塊客戶端發(fā)請求

 更新時(shí)間:2019年03月06日 10:24:42   作者:jadeshu  
今天小編就為大家分享一篇關(guān)于node.js中express模塊創(chuàng)建服務(wù)器和http模塊客戶端發(fā)請求,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧

首先下載express模塊,命令行輸入

npm install express

1.node.js中express模塊創(chuàng)建服務(wù)端

在js代碼同文件位置新建一個文件夾(www_root),里面存放網(wǎng)頁文件等,就可以在瀏覽器中訪問了

var express = require("express");
var path = require("path");
var app = express();
//目錄  (當(dāng)前目錄下的www_root目錄)
app.use(express.static(path.join(process.cwd(),"www_root")));
//監(jiān)聽
var server = app.listen(6080);
app.get('/', function (req, res) {
  //發(fā)送數(shù)據(jù)
  res.send('Hello World ~~~~~~~~~~~~!');
 });
// get, 處理響應(yīng)
app.get("/login", function (request, respones) {
 console.log("/login comming"); 
 // 服務(wù)器收到請求后,獲取客戶端get操作參數(shù)
 console.log(request.query);
 // 服務(wù)器回信息給客戶端
 respones.send("已連接上服務(wù)器~~");
});
app.post("/upload", function(request, respones) {
 console.log("/upload comming");
 // 獲得url上傳來的參數(shù)
 console.log(request.query);
 // 獲得用戶給我們發(fā)送過來的數(shù)據(jù)
 // 監(jiān)聽我們的data來獲得
 request.on("data", function(data) {
 console.log(data.toString());
 respones.send("UPLOAD OK"); 
 });
});

2.http模塊客戶端發(fā)請求

(實(shí)例1)http_get測試

var http = require("http");
/*
callback(is_success, data/erro)
*/
function http_get(ip, port, url, params, callback){
  //創(chuàng)建一個http.ClientRequest對象
  var options = {
    host : ip,
    port : port,
    path : url+"?"+params,
    method : "GET",
  };
  var request = http.request(options,function(incoming_msg){
    console.log("get respones");
  });
  //發(fā)送這個請求
  request.end();
}
http_get("127.0.0.1", 6080, "/login", "uname=jadeshu&upw=123456", function(is_ok,data){
});

(實(shí)例2)http_get、http_post測試

var http = require("http");
/*
 [100] = "Continue",
 [101] = "Switching Protocols",
 [200] = "OK",
 [201] = "Created",
 [202] = "Accepted",
 [203] = "Non-Authoritative Information",
 [204] = "No Content",
 [205] = "Reset Content",
 [206] = "Partial Content",
 [300] = "Multiple Choices",
 [301] = "Moved Permanently",
 [302] = "Found",
 [303] = "See Other",
 [304] = "Not Modified",
 [305] = "Use Proxy",
 [307] = "Temporary Redirect",
 [400] = "Bad Request",
 [401] = "Unauthorized",
 [402] = "Payment Required",
 [403] = "Forbidden",
 [404] = "Not Found",
 [405] = "Method Not Allowed",
 [406] = "Not Acceptable",
 [407] = "Proxy Authentication Required",
 [408] = "Request Time-out",
 [409] = "Conflict",
 [410] = "Gone",
 [411] = "Length Required",
 [412] = "Precondition Failed",
 [413] = "Request Entity Too Large",
 [414] = "Request-URI Too Large",
 [415] = "Unsupported Media Type",
 [416] = "Requested range not satisfiable",
 [417] = "Expectation Failed",
 [500] = "Internal Server Error",
 [501] = "Not Implemented",
 [502] = "Bad Gateway",
 [503] = "Service Unavailable",
 [504] = "Gateway Time-out",
 [505] = "HTTP Version not supported",
}
*/
/*
callback(is_success, data/erro)
*/
// get請求的參數(shù),是帶在URL的地址上面的
function http_get(ip, port, url, params, callback) {
 // step1,創(chuàng)建一個 http.ClientRequest
 var options = {
 host: "127.0.0.1",
 port: port,
 path: url + "?" + params,
 method: "GET"
 };
 // 當(dāng)有請求返回的時(shí)候,參數(shù)就會被傳遞為http.IncomingMessage
 var req = http.request(options, function(incoming_msg) {
 console.log("respones status " + incoming_msg.statusCode);
 // 監(jiān)聽IncomingMessage的data事件,當(dāng)收到服務(wù)器發(fā)過來的數(shù)據(jù)的時(shí)候,觸發(fā)這個事件
 incoming_msg.on("data", function(data) {
  if (incoming_msg.statusCode === 200) {
  callback(true, data);
  }
 });
 });
 // 把這個請求發(fā)送出去
 req.end();
}
/*
http_get("127.0.0.1", 6080, "/login", "uname=blake&upwd=123456", function(is_ok, data) {
 if (is_ok) {
 console.log(data.toString());
 }
});
*/
// post可以帶body數(shù)據(jù)傳到服務(wù)器
function http_post(ip, port, url, params, body, callback) {
 // step1,創(chuàng)建一個 http.ClientRequest
 var options = {
 host: "127.0.0.1",
 port: port,
 path: url + "?" + params,
 method: "POST",
 headers: {
  "Content-Type": "application/x-www-form-urlencoded",
  "Content-Length": body.length
 }
 };
 var req = http.request(options, function(incoming_msg) {
 console.log("respones status " + incoming_msg.statusCode);
 // 監(jiān)聽IncomingMessage的data事件,當(dāng)收到服務(wù)器發(fā)過來的數(shù)據(jù)的時(shí)候,觸發(fā)這個事件
 incoming_msg.on("data", function(data) {
  if (incoming_msg.statusCode === 200) {
  callback(true, data);
  }
 });
 });
 // step2 寫入body數(shù)據(jù)
 req.write(body);
 // 發(fā)送請求
 req.end();
}
http_post("127.0.0.1", 6080, "/upload", "filename=my_file.txt", "Hello Htpp Post", function(is_ok, data) {
 if (is_ok) {
 console.log("upload_success", data.toString()); 
 }
});

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

  • Nodejs腳本實(shí)現(xiàn)批量修改文件

    Nodejs腳本實(shí)現(xiàn)批量修改文件

    當(dāng)我們想要更改一下所有的文件,如何可以在修改到這些文件的同時(shí)又能實(shí)現(xiàn)節(jié)省時(shí)間呢,通過這篇文章我們將來學(xué)習(xí)一下怎么通過這個腳本來實(shí)現(xiàn)這個功能,希望對大家有所幫助
    2023-11-11
  • node.js+Ajax實(shí)現(xiàn)獲取HTTP服務(wù)器返回?cái)?shù)據(jù)

    node.js+Ajax實(shí)現(xiàn)獲取HTTP服務(wù)器返回?cái)?shù)據(jù)

    這篇文章主要介紹了node.js+Ajax實(shí)現(xiàn)獲取HTTP服務(wù)器返回?cái)?shù)據(jù),講解的十分詳細(xì),也給出了很多的實(shí)例,是篇非常不錯的文章,這里推薦給大家。
    2014-11-11
  • 基于websocket實(shí)現(xiàn)簡單聊天室對話

    基于websocket實(shí)現(xiàn)簡單聊天室對話

    這篇文章主要為大家詳細(xì)介紹了基于websocket實(shí)現(xiàn)簡單聊天室對話,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • nodejs搭建本地http服務(wù)器教程

    nodejs搭建本地http服務(wù)器教程

    本篇文章主要介紹了nodejs搭建本地http服務(wù)器教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • windows8.1+iis8.5下安裝node.js開發(fā)環(huán)境

    windows8.1+iis8.5下安裝node.js開發(fā)環(huán)境

    這篇文章主要介紹了windows8.1+iis8.5下安裝node.js開發(fā)環(huán)境的方法,需要的朋友可以參考下
    2014-12-12
  • node實(shí)現(xiàn)爬蟲的幾種簡易方式

    node實(shí)現(xiàn)爬蟲的幾種簡易方式

    這篇文章主要給大家介紹了關(guān)于node實(shí)現(xiàn)爬蟲的幾種簡易方式,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用node具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • NodeJs操作MongoDB教程之分頁功能以及常見問題

    NodeJs操作MongoDB教程之分頁功能以及常見問題

    這篇文章主要給大家介紹了關(guān)于NodeJs操作MongoDB教程之分頁功能以及常見問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用NodeJs具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Node.js環(huán)境下編寫爬蟲爬取維基百科內(nèi)容的實(shí)例分享

    Node.js環(huán)境下編寫爬蟲爬取維基百科內(nèi)容的實(shí)例分享

    WikiPedia平時(shí)在國內(nèi)不大好訪問-- 所以用爬蟲一次性把要看的東西都爬下來保存慢慢看還是比較好的XD 這里我們就來看一下Node.js環(huán)境下編寫爬蟲爬取維基百科內(nèi)容的實(shí)例分享
    2016-06-06
  • node.js中的url.parse方法使用舉例

    node.js中的url.parse方法使用舉例

    url.parse()可以將一個完整的URL地址,分為很多部分,下面這篇文章主要給大家介紹了關(guān)于node.js中url.parse方法使用的相關(guān)資料,文中通過實(shí)例代碼和圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • node.js?使用process.argv獲取和處理命令行參數(shù)的操作

    node.js?使用process.argv獲取和處理命令行參數(shù)的操作

    process.argv是Node.js中用于獲取命令行參數(shù)的數(shù)組,基本使用方法是通過命令行傳遞參數(shù)并在腳本中訪問這些參數(shù),參數(shù)可以根據(jù)需求進(jìn)行處理,也可以使用第三方庫如minimist或yargs來簡化參數(shù)解析,這些工具可以幫助開發(fā)者有效地管理和使用命令行參數(shù),提高腳本的靈活性和功能性
    2024-10-10

最新評論

大方县| 凤庆县| 吉木萨尔县| 高尔夫| 兴化市| 蒲江县| 开原市| 象州县| 伽师县| 清镇市| 漳平市| 廉江市| 固阳县| 县级市| 平阳县| 丰县| 桃江县| 泽库县| 凤阳县| 东乡族自治县| 静宁县| 昌邑市| 墨竹工卡县| 九台市| 新乐市| 绥芬河市| 临沧市| 汉川市| 锡林浩特市| 甘泉县| 万盛区| 海宁市| 宣化县| 区。| 盐源县| 宣威市| 漯河市| 油尖旺区| 观塘区| 天等县| 大姚县|