IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

十八、Node.js GET-POST 请求

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

文章永久连接:https://tech.souyunku.com/?p=5452

制作交互式的 WEB 网页,才是 HTML 和 HTTP 发展的初衷

HTML 表单(form) 是制作交互式网页最重要的组成部分,用户通过表单提交数据,或是用于查询,或是用于保存,或是请求

HTML 表单提交到服务器一般都使用 GET / POST 请求

本章,我们就来学习在 Node.js 中如何处理 GET / POST 请求

Node.js 获取 GET 请求内容

GET 请求的参数都放在了 HTTP URL 里面的 Query 部分,也就是问号(?) 后面的部分

因此我们可以直接解析 URL 获得请求的数据

Node.js url 模块可以解析 URL 并获得 GET 参数

main.js

/*
 * filename: main.js
 * author: 搜云库技术团队(tech.souyunku.com)
 * Copyright © 2015-2065 tech.souyunku.com. All rights reserved.
*/

var http = require('http');
var url = require('url');
var util = require('util');

var server = http.createServer(function(req, res)
{
    res.writeHead(200, {'Content-Type': 'text/plain; charset=utf-8'});

    res.end(util.inspect(url.parse(req.url, true)));

}).listen(8080);


var host = server.address().address
var port = server.address().port
console.log("Node.js Express 应用范例,访问地址为 http://%s:%s", host, port)

在浏览器中访问 http://127.0.0.1:8080/?greeting=Hello&name=搜云库技术团队 显示如下

img_1.png

解析 URL 的参数

Node.js url.parse 方法可以解析 URL 中的参数

/*
 * filename: main.js
 * author: 搜云库技术团队(tech.souyunku.com)
 * Copyright © 2015-2065 tech.souyunku.com. All rights reserved.
*/

var http = require('http');
var url = require('url');
var util = require('util');

var server = http.createServer(function(req, res)
{

    // 解析 url 参数
    var params = url.parse(req.url, true).query;
    res.write("网站名:" + params.name);
    res.write("\n");
    res.write("网站 URL:" + params.url);
    res.end();

}).listen(8080);


var host = server.address().address
var port = server.address().port
console.log("Node.js Express 应用范例,访问地址为 http://%s:%s", host, port)

运行以上 Node.js 脚本

然后在浏览器中访问 http://127.0.0.1:8080/?url=tech.souyunku.com&name=搜云库技术团队

显示如下

img_2.png

Node.js 获取 POST 请求内容

HTTP POST 请求的内容全部的都在请求体(body) 中

Node.js http 模块没有提供任何一个属性或方法可以获取到请求体,因为等待请求体传输可能是一件耗时的工作

我们只能监听 req 的 on.data 事件,然后获得请求体原文

// 定义了一个post变量,用于暂存请求体的信息
var post = '';     

// 通过 req 的 data 事件监听函数,每当接受到请求体的数据,就累加到post变量中
req.on('data', function(chunk){    
    post += chunk;
});

虽然 Node.js 没有默认解析请求体,但我们可以使用第三方模块来解析他们

querystring 就是这样的一个模块,它可以解析 HTTP POST 上来的内容

req.on('end', function(){    
    post = querystring.parse(post);
});

通过以上的两个步骤,我们已经能够获得和解析 HTTP POST 的数据

/*
 * filename: main.js
 * author: 搜云库技术团队(tech.souyunku.com)
 * Copyright © 2015-2065 tech.souyunku.com. All rights reserved.
*/


var http = require('http');
var querystring = require('querystring');

var postHTML = 
  '<html><head><meta charset="utf-8"><title>搜云库技术团队(souyunku.cn) Node.js 范例</title></head>' +
  '<body>' +
  '<form method="post">' +
  '网站名: <input name="name"><br>' +
  '网站 URL: <input name="url"><br>' +
  '<input type="submit">' +
  '</form>' +
  '</body></html>';

var server = http.createServer(function (req, res) {
  var body = "";
  req.on('data', function (chunk) {
    body += chunk;
  });
  req.on('end', function () {
    // 解析参数
    body = querystring.parse(body);
    // 设置响应头部信息及编码
    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(8080);


var host = server.address().address
var port = server.address().port
console.log("Node.js Express 应用范例,访问地址为 http://%s:%s", host, port)

运行以上 Node.js 脚本

然后在浏览器中访问 http://127.0.0.1:8080/

演示 HTTP POST 提交数据操作如下

img_3.png

干货推荐

本站推荐:精选优质专栏

附录:Node.js 教程:系列文章


Warning: A non-numeric value encountered in /data/wangzhan/tech.souyunku.com.wp/wp-content/themes/dux/functions-theme.php on line 1154
赞(80) 打赏



未经允许不得转载:搜云库技术团队 » 十八、Node.js GET-POST 请求

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码
IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

评论 抢沙发

大前端WP主题 更专业 更方便

联系我们联系我们

觉得文章有用就打赏一下文章作者

微信扫一扫打赏

微信扫一扫打赏


Fatal error: Uncaught Exception: Cache directory not writable. Comet Cache needs this directory please: `/data/wangzhan/tech.souyunku.com.wp/wp-content/cache/comet-cache/cache/https/tech-souyunku-com/index.q`. Set permissions to `755` or higher; `777` might be needed in some cases. in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php:367 Stack trace: #0 [internal function]: WebSharks\CometCache\Classes\AdvancedCache->outputBufferCallbackHandler() #1 /data/wangzhan/tech.souyunku.com.wp/wp-includes/functions.php(5109): ob_end_flush() #2 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(303): wp_ob_end_flush_all() #3 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(327): WP_Hook->apply_filters() #4 /data/wangzhan/tech.souyunku.com.wp/wp-includes/plugin.php(470): WP_Hook->do_action() #5 /data/wangzhan/tech.souyunku.com.wp/wp-includes/load.php(1097): do_action() #6 [internal function]: shutdown_action_hook() #7 {main} thrown in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php on line 367