国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

nodejs接收post請求的參數(shù)

這篇具有很好參考價值的文章主要介紹了nodejs接收post請求的參數(shù)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

  • post請求參數(shù)不直接在url路徑中拼接,而是放在請求體中發(fā)送給服務(wù)器

    • 請求三要素:請求行、請求頭、請求體
  • 1.1-瀏覽器發(fā)送post請求參數(shù)的方式

  • post請求參數(shù)不能直接在url路徑中拼接,所以一般使用ajax請求來發(fā)送post請求參數(shù)
    • 通常都是提交form表單數(shù)據(jù)使用post請求
  • 
    <script>
    
      //瀏覽器中一般使用ajax來發(fā)送post請求
      $('#form').on('sunmit', function (e) {
        //禁用表單默認(rèn)提交事件
        e.preventDefault();
        $.ajax({
          url: 'heroAdd',
          type: 'post',
          dataType: 'json',
          data: $(this).serialize(),
          success: function (data) {
          }
        });
      });
    </script>
    
    
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <title>Hero - Admin</title>
      <!-- 導(dǎo)入jquery -->
      <script src="/node_modules/jquery/dist/jquery.js"></script>
      <!-- bootstrap布局 -->
      <link rel="stylesheet" href="/node_modules/bootstrap/dist/css/bootstrap.css">
      <script src="/node_modules/bootstrap/dist/js/bootstrap.js"></script>
      <style>
        .hero-list img {
          width: 50px;
        }
      </style>
    </head>
    
    <body>
      <header>
        <div class="page-header container">
          <h1>
            <a href="/">王者榮耀</a>
            <small>英雄管理器</small>
          </h1>
        </div>
      </header>
      <div class="container hero-list">
        <form id="form">
          <div class="form-group">
            <label for="exampleInputEmail1">英雄名稱</label>
            <input type="text" name="name" class="form-control" id="exampleInputEmail1" placeholder="請輸入英雄名稱">
          </div>
          <div class="form-group">
            <label for="exampleInputPassword1">英雄性別</label>
            <div class="radio">
              <label>
                <input type="radio" name="gender" id="optionsRadios1" value="男" checked>男
              </label>
              <label>
                <input type="radio" name="gender" id="optionsRadios1" value="女" checked>女
              </label>
            </div>
          </div>
          <div class="form-group">
            <label for="exampleInputFile">英雄圖片</label>
            <!-- <input type="file" id="exampleInputFile"> -->
            <p class="help-block">請上傳英雄圖片.</p>
          </div>
          <button type="submit" class="btn btn-success">點擊保存</button>
        </form>
      </div>
    </body>
    
    <script>
      //瀏覽器中一般使用ajax來發(fā)送post請求
      $('#form').on('sunmit', function (e) {
        //禁用表單默認(rèn)提交事件
        e.preventDefault();
        $.ajax({
          url: 'heroAdd',
          type: 'post',
          dataType: 'json',
          data: $(this).serialize(),
          success: function (data) {
          }
        });
      });
    </script>
    
    </html>
    

    1.2-服務(wù)端接收post請求參數(shù)的方式

  • 與get請求不同的是,服務(wù)端接收post請求參數(shù)不是一次就可以獲取的,通常需要多次

  • 一般post請求發(fā)送的參數(shù)數(shù)據(jù)要比get請求大得多
    1.服務(wù)端接收表單數(shù)據(jù)流程

    (1)如果表單數(shù)據(jù)量越多,則發(fā)送的次數(shù)越多,如果比較少,可能一次就發(fā)過來了
    (2)接收表單數(shù)據(jù)的時候,需要通過監(jiān)聽 req 對象的 data 事件來取數(shù)據(jù)
    (3)每當(dāng)收到一段表單提交過來的數(shù)據(jù),req 的 data 事件就會被觸發(fā)一次,同時通過回調(diào)函數(shù)可以拿到該 段 的數(shù)據(jù)
    服務(wù)端需要自己添加數(shù)據(jù)流
    (4)當(dāng)接收表單提交的數(shù)據(jù)完畢之后,會執(zhí)行req的 on 事件
    2.服務(wù)端處理表單數(shù)據(jù)的邏輯流程

    (1)對數(shù)據(jù)進(jìn)行解碼(中文數(shù)據(jù)提交時會進(jìn)行url編碼)
    decodeURI(data)
    (2)使用querystring對url進(jìn)行反序列化(解析url將&和=拆分成鍵值對),得到一個對象
    querystring是nodejs內(nèi)置的一個專用于處理url的模塊,API只有四個,詳情見nodejs官方文檔
    post請求參數(shù)不能使用url模塊解析,因為他不是一個url,而是一個請求體對象
    (3)將數(shù)據(jù)插入到數(shù)據(jù)庫
    ?文章來源地址http://www.zghlxwxcb.cn/news/detail-434057.html

  • 
    //導(dǎo)入querystring模塊(解析post請求數(shù)據(jù))
    var querystring = require('querystring');
    
     console.log(req.method);
    
    //1.通過判斷url路徑和請求方式來判斷是否是表單提交
    if (req.url === '/heroAdd' && req.method === 'POST') {
        /**服務(wù)端接收post請求參數(shù)的流程
            * (1)給req請求注冊接收數(shù)據(jù)data事件(該方法會執(zhí)行多次,需要我們手動累加二進(jìn)制數(shù)據(jù))
            *      * 如果表單數(shù)據(jù)量越多,則發(fā)送的次數(shù)越多,如果比較少,可能一次就發(fā)過來了
            *      * 所以接收表單數(shù)據(jù)的時候,需要通過監(jiān)聽 req 對象的 data 事件來取數(shù)據(jù)
            *      * 也就是說,每當(dāng)收到一段表單提交過來的數(shù)據(jù),req 的 data 事件就會被觸發(fā)一次,同時通過回調(diào)函數(shù)可以拿到該 段 的數(shù)據(jù)
            * (2)給req請求注冊完成接收數(shù)據(jù)end事件(所有數(shù)據(jù)接收完成會執(zhí)行一次該方法)
            */
        //創(chuàng)建空字符疊加數(shù)據(jù)片段
        var data = '';
    
        //2.注冊data事件接收數(shù)據(jù)(每當(dāng)收到一段表單提交的數(shù)據(jù),該方法會執(zhí)行一次)
        req.on('data', function (chunk) {
            // chunk 默認(rèn)是一個二進(jìn)制數(shù)據(jù),和 data 拼接會自動 toString
            data += chunk;
        });
    
        // 3.當(dāng)接收表單提交的數(shù)據(jù)完畢之后,就可以進(jìn)一步處理了
        //注冊end事件,所有數(shù)據(jù)接收完成會執(zhí)行一次該方法
        req.on('end', function () {
    
            //(1).對url進(jìn)行解碼(url會對中文進(jìn)行編碼)
            data = decodeURI(data);
            console.log(data);
    
            /**post請求參數(shù)不能使用url模塊解析,因為他不是一個url,而是一個請求體對象 */
    
            //(2).使用querystring對url進(jìn)行反序列化(解析url將&和=拆分成鍵值對),得到一個對象
            //querystring是nodejs內(nèi)置的一個專用于處理url的模塊,API只有四個,詳情見nodejs官方文檔
            var dataObject = querystring.parse(data);
            console.log(dataObject);
        });
    }
    
    
    //1.導(dǎo)入http模塊
    var http = require('http');
    //導(dǎo)入文件模塊
    var fs = require('fs');
    //導(dǎo)入路徑模塊
    var path = require('path');
    //導(dǎo)入querystring模塊(解析post請求數(shù)據(jù))
    var querystring = require('querystring');
    
    //2.創(chuàng)建服務(wù)器
    var app = http.createServer();
    
    //3.添加響應(yīng)事件
    app.on('request', function (req, res) {
    
        console.log(req.method);
    
        //1.通過判斷url路徑和請求方式來判斷是否是表單提交
        if (req.url === '/heroAdd' && req.method === 'POST') {
            /**服務(wù)端接收post請求參數(shù)的流程
             * (1)給req請求注冊接收數(shù)據(jù)data事件(該方法會執(zhí)行多次,需要我們手動累加二進(jìn)制數(shù)據(jù))
             *      * 如果表單數(shù)據(jù)量越多,則發(fā)送的次數(shù)越多,如果比較少,可能一次就發(fā)過來了
             *      * 所以接收表單數(shù)據(jù)的時候,需要通過監(jiān)聽 req 對象的 data 事件來取數(shù)據(jù)
             *      * 也就是說,每當(dāng)收到一段表單提交過來的數(shù)據(jù),req 的 data 事件就會被觸發(fā)一次,同時通過回調(diào)函數(shù)可以拿到該 段 的數(shù)據(jù)
             * (2)給req請求注冊完成接收數(shù)據(jù)end事件(所有數(shù)據(jù)接收完成會執(zhí)行一次該方法)
             */
            //創(chuàng)建空字符疊加數(shù)據(jù)片段
            var data = '';
    
            //2.注冊data事件接收數(shù)據(jù)(每當(dāng)收到一段表單提交的數(shù)據(jù),該方法會執(zhí)行一次)
            req.on('data', function (chunk) {
                // chunk 默認(rèn)是一個二進(jìn)制數(shù)據(jù),和 data 拼接會自動 toString
                data += chunk;
            });
    
            // 3.當(dāng)接收表單提交的數(shù)據(jù)完畢之后,就可以進(jìn)一步處理了
            //注冊end事件,所有數(shù)據(jù)接收完成會執(zhí)行一次該方法
            req.on('end', function () {
    
                //(1).對url進(jìn)行解碼(url會對中文進(jìn)行編碼)
                data = decodeURI(data);
                console.log(data);
    
                /**post請求參數(shù)不能使用url模塊解析,因為他不是一個url,而是一個請求體對象 */
    
                //(2).使用querystring對url進(jìn)行反序列化(解析url將&和=拆分成鍵值對),得到一個對象
                //querystring是nodejs內(nèi)置的一個專用于處理url的模塊,API只有四個,詳情見nodejs官方文檔
                var dataObject = querystring.parse(data);
                console.log(dataObject);
            });
        }
    
        if (req.url === '/heroAdd' && req.method === 'POST') {
            fs.readFile('./heroAdd.html', function (err, data) {
                if (err) {
                    throw err;
                }
                res.end(data);
            });
        } else if (req.url.indexOf('/node_modules') === 0) {
            fs.readFile(__dirname + req.url, function (err, data) {
                if (err) {
                    throw err;
                } else {
                    res.end(data);
                }
            });
        } else {
            res.end('請求路徑: ' + req.url);
        }
    });
    
    //4.監(jiān)聽端口號
    app.listen(3000, function () {
        console.log('歡迎來到王者榮耀英雄管理器');
    });
    

到了這里,關(guān)于nodejs接收post請求的參數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 在Vue中使用axios發(fā)送post請求時,可能會出現(xiàn)后端無法接收到參數(shù)的情況。

    在Vue中使用axios發(fā)送post請求時,可能會出現(xiàn)后端無法接收到參數(shù)的情況。這個問題的原因是axios默認(rèn)發(fā)送的請求是json格式的,而后端接收的請求是form表單格式的,這就導(dǎo)致后端無法獲取json格式的請求參數(shù)。解決這個問題可以通過設(shè)置axios的請求頭部信息,將請求格式設(shè)置為

    2024年02月16日
    瀏覽(19)
  • vue3使用axios發(fā)送post請求,后臺接收到的參數(shù)總是null,使用postman測試后臺是能接收數(shù)據(jù)的

    使用vue3,連基本的請求都失敗了,使用瀏覽器查看post請求,參數(shù)中是有值,但是傳到后臺,每個參數(shù)都是null,不知道哪里錯了。排除了后臺的錯誤,就剩下了vue代碼的錯誤了。我出錯的地方是vue使用axios發(fā)送post請求的時候,參數(shù)格式寫錯了。 直接貼代碼了,正確的寫法 f

    2024年02月13日
    瀏覽(23)
  • python 發(fā)送和接收post請求

    bottle是python的web框架,只需要引用一個 .py 文件即可,點擊去下載頁

    2024年02月15日
    瀏覽(15)
  • 前端post,get請求傳參方式 以及后臺接收

    前端post,get請求傳參方式 以及后臺接收

    post請求: 1:js中 2:使用 首先引入方法js: 調(diào)用方法 3:瀏覽器請求 4:后臺參數(shù)接收 get請求: 第一種:通過params對象傳遞,將參數(shù)以鍵值對的形式傳遞,當(dāng)傳遞的參數(shù)為多個時,瀏覽器會自動拼接進(jìn)行分割 1:js中 2:使用 首先引入方法js: 調(diào)用方法 3:瀏覽器請求 4:后臺

    2024年02月10日
    瀏覽(27)
  • SpringBoot中接收POST參數(shù)的幾種方式

    SpringBoot中接收POST參數(shù)的幾種方式

    今天在做一個vue前后端分離項目的過程中,踩了一個坑,記錄一下 前端如下: 用戶名字段: username 密碼字段: password 提交后,發(fā)現(xiàn)后端怎么也收不到參數(shù),總結(jié)如下: 常見的接收post參數(shù),有三種 額外參數(shù): 使用 required = false 標(biāo)注參數(shù)是非必須的。 使用 defaultValue 給參數(shù)

    2024年02月15日
    瀏覽(31)
  • Java中GET請求與POST請求,前端傳參與后端接收實例

    Java中GET請求與POST請求,前端傳參與后端接收實例

    此示例以代碼方式展現(xiàn),可直接結(jié)合controller層每個接口上方注釋與其接口傳遞參數(shù)方式理解! 前端傳參直接就以apiPost工具來代替 apiPost調(diào)用后端接口幾種方式 ? 代碼: ?controller層: service層: mapper層: xml:

    2024年02月07日
    瀏覽(31)
  • 嵌入式Qt中實現(xiàn)http服務(wù)接收POST請求

    嵌入式Qt中實現(xiàn)http服務(wù)接收POST請求

    嗨嘍,大家好!以下知識點做個簡單記錄分享給小伙伴們! 首先我們來理解幾個概念 “ WebSocket服務(wù)器和HTTP服務(wù)器是兩種不同的服務(wù)器類型,它們在協(xié)議、連接方式和通信模式等方面有所區(qū)別。 協(xié)議:HTTP服務(wù)器使用HTTP協(xié)議進(jìn)行通信,而WebSocket服務(wù)器使用WebSocket協(xié)議。HTTP協(xié)

    2024年02月20日
    瀏覽(21)
  • Java文件導(dǎo)入接口多參數(shù)寫法 (POST方法同時支持接收文件流和其他參數(shù))

    Java文件導(dǎo)入接口多參數(shù)寫法 (POST方法同時支持接收文件流和其他參數(shù))

    使用表單方式進(jìn)行傳輸,需要注意其他參數(shù)需要使用 @RequestPart 注解進(jìn)行接收,因為在 post 方法中表單傳輸使用@RequestParam 接收 json 格式默認(rèn)視為字符串類型,接口無法映射對應(yīng)實體類 @RequestParam 依賴Converter or PropertyEditor進(jìn)行數(shù)據(jù)解析, @RequestPart參考’Content-Type’ header,依賴

    2024年02月16日
    瀏覽(32)
  • Python中的POST請求參數(shù)

    在HTTP協(xié)議中,GET和POST是兩種常用的請求方法。GET請求通過URL參數(shù)將請求數(shù)據(jù)傳遞給服務(wù)器,而POST請求則通過請求體中的參數(shù)傳遞數(shù)據(jù)。POST請求通常用于提交表單、上傳文件等操作。POST請求參數(shù)就是請求體中的參數(shù)。 在Python中,我們可以使用第三方庫如requests來發(fā)送POST請求

    2024年01月24日
    瀏覽(26)
  • 使用HttpURLConnection發(fā)送POST請求并攜帶請求參數(shù)

    這里的param是請求參數(shù),需要將其轉(zhuǎn)換為字節(jié)數(shù)組后寫入輸出流。 這里的response是響應(yīng)數(shù)據(jù),需要將其讀取為字符串后使用。 完整的示例代碼如下所示: 需要注意的是,以上示例代碼中的請求參數(shù)是以字符串形式傳遞的,如果需要傳遞復(fù)雜的請求參數(shù),可以考慮使用JSON等格

    2024年02月04日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包