1. 程式人生 > >NodeJs處理Get請求和Post請求

NodeJs處理Get請求和Post請求

對於HTTP請求來說,我們通常使用的是Get和Post,除此之外還有put,delete等,而對於get來說,比較lightweight,只是對字串的傳輸,它會被新增到URL地址裡,屬於URL的一部分,有時,我們為了安全和相容性問題,URL地址上的引數會進行Url.Encode,有的瀏覽器已經帶我們做了這些;而對於Post來說,就顯得重了一些,它的資料以包的形式存在,除了可以有文字資訊,還可以有二進位制檔案流資訊,這講裡,我們主要說的是Post裡的文字處理。

一  使用NodeJs實現對Get請求的處理,nodejs接入的形式為url?param1=zzl&param2=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