NodeJs處理Get請求和Post請求
對於HTTP請求來說,我們通常使用的是Get和Post,除此之外還有put,delete等,而對於get來說,比較lightweight,只是對字串的傳輸,它會被新增到URL地址裡,屬於URL的一部分,有時,我們為了安全和相容性問題,URL地址上的引數會進行Url.Encode,有的瀏覽器已經帶我們做了這些;而對於Post來說,就顯得重了一些,它的資料以包的形式存在,除了可以有文字資訊,還可以有二進位制檔案流資訊,這講裡,我們主要說的是Post裡的文字處理。
一 使用NodeJs實現對Get請求的處理,nodejs接入的形式為url?param1=zzl¶m2=male
var redis = require("redis"); var http = require('http'); var url = require("url"); var info = "通過HTTPGet方式成功加入佇列"; http.createServer(function (req, res) { var params = url.parse(req.url, true).query;//解釋url引數部分name=zzl&[email protected] var client = redis.createClient(); client.lpush("topnews", params.info); res.writeHead(200, { 'Content-Type': 'text/plain;charset=utf-8' }); client.lpop("topnews", function (i, o) { console.log(o);//回撥,所以info可能沒法得到o的值,就被res.write輸出了 }) client.quit(); res.write(info); res.end(); }).listen(8000, "127.0.0.1"); console.log('Server running at http://127.0.0.1:8000/');
測試:http://127.0.0.1:8000?info=zzl
二 使用NodeJs實現對Post請求的處理,nodejs接入的形式為{param1="zzl",param2="male"}
Post由於它的重量,所以不可能說接收就接收,它會儲存接入中和接入完成兩種狀態,兩種狀態對應著回撥方法,即,當然資料處於接入中狀態時,處理一種流程;當資料接入完成後,處理另一種流程。
//接入中 req.addListener("data", function (postDataChunk) {}); //接收完成 req.addListener("end", function () {});
下面看一下完成的程式碼:
var redis = require('redis'); var http = require('http'); var url = require("url"); var querystring = require("querystring"); http.createServer(function (req, res) { // 設定接收資料編碼格式為 UTF-8 req.setEncoding('utf-8'); var postData = ""; //POST & GET : name=zzl&[email protected] // 資料塊接收中 req.addListener("data", function (postDataChunk) { postData += postDataChunk; }); // 資料接收完畢,執行回撥函式 req.addListener("end", function () { console.log('資料接收完畢'); var params = querystring.parse(postData);//GET & POST ////解釋表單資料部分{name="zzl",email="[email protected]"} console.log(params); console.log(params["name"]); PushToRedis(params["name"]); res.writeHead(500, { "Content-Type": "text/plain;charset=utf-8" }); res.end("資料提交完畢"); }); }).listen(8000, "127.0.0.1"); console.log('Server running at http://127.0.0.1:8000/'); //表單接收完成後,再處理redis部分 function PushToRedis(info) { var client = redis.createClient(); client.lpush("topnews", info); console.log("PushToRedis:" + info); client.lpop("topnews", function (i, o) { console.log(o);//回撥,所以info可能沒法得到o的值,就被res.write輸出了 }) client.quit(); }
下面看一下結果,我把它截了圖:
實事上,對於post到nodeJS再由nodeJS到redis,這個case我們經常會看到,它實現起來比IIS,apache在效能上要高很多,它沒有為每個連線建立執行緒,它解決了IO阻塞等等,OK,說到這裡,我再強調一個nodeJS用到的最重要的場合:邏輯簡單的高併發場合!
相關推薦
NodeJs處理Get請求和Post請求
對於HTTP請求來說,我們通常使用的是Get和Post,除此之外還有put,delete等,而對於get來說,比較lightweight,只是對字串的傳輸,它會被新增到URL地址裡,屬於URL的一部分,有時,我們為了安全和相容性問題,URL地址上的引數會進行Url.Enco
get請求和post請求的區別
font size 緩存 區別 post ont 服務 請求參數 瀏覽器 1.get是從服務器獲取數據,post是向服務器提交數據2.get請求的參數在url後面,post請求的參數在http body裏面3.get請求數據量在2KB以內,post請求的數據量比較大4.ge
node10---GET請求和POST請求的參數
gin ida host req div lis ble form 文件上傳 GET請求的參數在URL中,在原生Node中,需要使用url模塊來識別參數字符串。在Express中,不需要使用url模塊了。可以直接使用req.query對象。 ● POST請求在expres
原生Get請求和Post請求
esp ext for read type 理論 stat 應用 str get()請求 function loadXMLDoc(){var xmlhttp;if (window.XMLHttpRequest) {// code for IE7+, Firefox, Ch
使用SoapUI工具做get請求和post請求接口測試
tle 構建 判斷 -1 request point itl pos 效果 祝大家節日快樂啦。 之前寫過的一篇帖子已經介紹了SoapUI工具的基本使用,所以在此不再重復講解關於建工程、建測試套件、添加用例等操作,可查看該篇文章詳解:http://www.cnblogs.co
Ajax相關——get請求和post請求的區別
attribute 文本 str 默認端口 soft 組成 資源 string 值類型 一、完整的URL由以下幾部分組成: scheme:通信協議,常用的有:http/ftp。 host:主機,服務器(計算機)域名或IP地址 port:端口,整數,可選,省略時使用默認端口,
【Web篇02】Get請求和Post請求的區別
Web的面試題中經常會出現這麼一道題,請簡述Get請求和Post請求的區別,標準答案如下: get在瀏覽器回退時是無害的,post會再次提交請求; get產生的url地址可以被bookmark(加入標籤),post不可以; get請求只能進行url編碼,post可以進
008-HttpUrlConnection的get請求和post請求
HttpUrlConnection的get請求和post請求 的簡單標準請求方式 以後方便使用 ---GET--- // HashMap<String, Object&g
Python爬蟲:Scrapy的get請求和post請求
scrapy 請求繼承體系 Request |-- FormRequest 通過以下請求測試 GET: https://httpbin.org/get POST: https://httpbin.org/post get請求 方式:通過Request 傳送 im
爬蟲(抓取靜態頁面和動態頁面的區別,get請求和post請求的區別)
靜態頁面: 非結構化資料:HTML 處理方式:正則表示式,xpath, beautifulsoup4 靜態頁面中的資料都包含在網頁的HTML中(一般都是get請求) 所以可以直接在網頁的HTML中提取資料 關鍵詞一般都以查詢字串的方式拼接在URL中 分析URL的變
Get請求和Post請求的區別?
Get請求和Post請求都是HTTP的請求方法, HTTP1.0定義了三種請求方法: GET, POST 和 HEAD方法。 HTTP1.1新增了五種請求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。 我們可以通過不同的HTTP請求方式來
JavaWeb之傳送Get請求和Post請求的封裝類
import java.io.BufferedReader; import java.io.Closeable; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWrite
Http的Get請求和Post請求的區別.md
1 Http的Get請求和Post請求的區別 get是從伺服器獲取資料,post是傳送資料到伺服器。 get引數通過URL傳遞,post引數放在Request body中。 所以:get比post更不安全,因為引數直接暴露在URL上,所以不能用來傳遞敏感
爬蟲原理與資料抓取----- urllib2:GET請求和POST請求
urllib2預設只支援HTTP/HTTPS的GET和POST方法 urllib.urlencode() urllib 和 urllib2 都是接受URL請求的相關模組,但是提供了不同的功能。兩個最顯著的不同如下: urllib 僅可以接受URL,不能建立 設定了headers 的Request 類例項
Ajax中get請求和post請求,同步,非同步的區別
一.get和post區別 1.使用Get請求時,引數在URL中顯示,而使用Post方式,則不會顯示出來。 2.使用Get請求傳送資料量小,Post請求傳送資料量大。 3.get請求需注意快取問題,post請求不需擔心這個問題。 4.post請求必須設定Conte
python爬蟲(五)_urllib2:Get請求和Post請求
本篇將介紹urllib2的Get和Post方法,更多內容請參考:python學習指南 urllib2預設只支援HTTP/HTTPS的GET和POST方法 urllib.urlencode() urllib和urllib2都是接受URL請求的相關引數,但是提供了不
php 網路請求 get請求和post請求
程式碼記錄 <?php header('content-type:application:json;charset=utf8'); header('Access-Control-Allow-Origin:*'); //header('Access-Control-
簡單封裝了一個OKHttp的工具類 非同步get請求和post請求
package com.example.okhttp.OkHttp; import android.os.Handler; import android.os.Looper; import android.util.Log; import com.example.okhttp.Con
get請求和post請求引數中文亂碼的解決
首先出現中文亂碼的原因是tomcat預設的編碼方式是"ISO-8859-1",這種編碼方式以單個位元組作為一個字元,而漢字是以兩個位元組表示一個字元的。 post請求引數中文亂碼的解決辦法 對於post請求,請求中問亂碼的兩種解決辦法。 (1): request.set
http請求,get請求和post請求體以及響應體
一、http請求 1.Http請求格式 Http請求即客戶端傳送給伺服器的請求。該請求的內容格式如下所示: 請求首行 請求頭資訊 空行 請求正文,也稱請求體 2.使用HttpWatch抓包工具 請求資訊詳細內容如下: GET /Example03/ HTTP/1.1 Acc