【node.js】GET/POST请求、Web 模块

获取GET请求内容

node.js 中 url 模块中的 parse 函数提供了这个功能。

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

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(3000);

获取 URL 的参数

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

http.createServer(function(req, res){
    res.writeHead(200, {‘Content-Type‘: ‘text/plain‘});

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

}).listen(3000);

获取 POST 请求内容

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

var postHTML =
  ‘<html><head><meta charset="utf-8"><title>菜鸟教程 Node.js 实例</title></head>‘ +
  ‘<body>‘ +
  ‘<form method="post">‘ +
  ‘网站名: <input name="name"><br>‘ +
  ‘网站 URL: <input name="url"><br>‘ +
  ‘<input type="submit">‘ +
  ‘</form>‘ +
  ‘</body></html>‘;

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(3000);

使用 Node 创建 Web 服务器(服务端创建服务器,解析请求,读取文件内容,发送响应数据(响应头部、响应内容))

创建server.js

var http = require(‘http‘);
var fs = require(‘fs‘);
var url = require(‘url‘);

// 创建服务器
http.createServer( function (request, response) {
   // 解析请求,包括文件名
   var pathname = url.parse(request.url).pathname;

   // 输出请求的文件名
   console.log("Request for " + pathname + " received.");

   // 从文件系统中读取请求的文件内容
   fs.readFile(pathname.substr(1), function (err, data) {
      if (err) {
         console.log(err);
         // HTTP 状态码: 404 : NOT FOUND
         // Content Type: text/plain
         response.writeHead(404, {‘Content-Type‘: ‘text/html‘});
      }else{
         // HTTP 状态码: 200 : OK
         // Content Type: text/plain
         response.writeHead(200, {‘Content-Type‘: ‘text/html‘});    

         // 响应文件内容
         response.write(data.toString());
      }
      //  发送响应数据
      response.end();
   });
}).listen(8081);

// 控制台会输出以下信息
console.log(‘Server running at http://127.0.0.1:8081/‘);

创建一个 index.html

<html>
<head>
<title>Sample Page</title>
</head>
<body>
Hello World!
</body>
</html>

进入http://127.0.0.1:8081/index.html

使用 Node 创建 Web 客户端(向服务端请求,请求的选项,不断更新数据,数据接收完成)

var http = require(‘http‘);

// 用于请求的选项
var options = {
   host: ‘localhost‘,
   port: ‘8081‘,
   path: ‘/index.htm‘
};

// 处理响应的回调函数
var callback = function(response){
   // 不断更新数据
   var body = ‘‘;
   response.on(‘data‘, function(data) {
      body += data;
   });

   response.on(‘end‘, function() {
      // 数据接收完成
      console.log(body);
   });
}
// 向服务端发送请求
var req = http.request(options, callback);
req.end();

运行后得到结果

时间: 2024-11-03 22:44:43

【node.js】GET/POST请求、Web 模块的相关文章

Node.js【6】Web开发、进阶(模块加载、控制流、部署、弊端)

笔记来自<Node.js开发指南>BYVoid编著 实现过程:https://github.com/ichenxiaodao/express-example 第5章 使用Node.js进行Web开发 从零开始用Node.js实现一个微博系统,功能包括路由控制.页面模板.数据库访问.用户注册.登录.用户会话等内容. 会介绍Express框架.MVC设计模式.ejs模板引擎以及MongoDB数据库的操作. 5.1.准备工作 Express(http://expressjs.com/)除了为http

log4js-Node.js中的日志管理模块使用与封装

开发过程中,日志记录是必不可少的事情,尤其是生产系统中经常无法调试,因此日志就成了重要的调试信息来源. Node.js,已经有现成的开源日志模块,就是log4js,源码地址:点击打开链接 项目引用方法: npm install log4js 1.配置说明(仅以常用的dateFile日志类型举例,更多说明参考log4js-wiki): { "appenders": [ // 下面一行应该是用于跟express配合输出web请求url日志的 {"type": "

Node.js进程管理之Process模块

在前面Node.js事件运行机制也有提到,Node.js应用在单个线程运行,但是现在大部分服务器都是多处理器,为了方便使用多个进程,Node.js提供了3个模块.Process模块提供了访问正在运行的进程.child_process模块可以创建子进程,并与他们通信.cluster模块提供了实现共享相同端口的集群服务能力,允许多个请求同时处理. 一.Process模块是一个无须使用require()就可以从node.js应用程序进行访问的全局对象. 二.进程I/O管道 Process为进程stdi

Node.js【5】核心模块

笔记来自<Node.js开发指南>BYVoid编著 第4章 Node.js核心模块 4.1.全局对象 Node.js中的全局对象是global,所有全局变量(除了global本身以外)都是global对象的属性.我们在Node.js中能够直接访问到对象通常都是global的属性,如console.process等. 永远使用var定义变量以避免引入全局变量,因为全局变量会污染命名空间,提高代码的耦合风险. process用于描述当前Node.js进程状态的对象,提供了一个与操作系统的简单接口.

Node.js GET/POST请求

在很多场景中,我们的服务器都需要跟用户的浏览器打交道,如表单提交. 表单提交到服务器一般都使用GET/POST请求. 本章节我们将为大家介绍 Node.js GET/POST请求. 获取GET请求内容 由于GET请求直接被嵌入在路径中,URL是完整的请求路径,包括了?后面的部分,因此你可以手动解析后面的内容作为GET请求的参数. node.js中url模块中的parse函数提供了这个功能. var http = require('http'); var url = require('url');

body-parser Node.js(Express) HTTP请求体解析中间件

body-parser Node.js(Express) HTTP请求体解析中间件 2016年06月08日     781     声明 在HTTP请求中,POST.PUT和PATCH三种请求方法中包含请求体,Node.js 原生HTTP模块中,请求体要基于流的方式接收和解析.body-parser是一个HTTP请求体解析中间件,使用这个模块可以解析JSON.Raw.文本.URL-encoded格式的请求体,Express框架中就是使用这个模块做为请求体解析中间件. 请求体解析 1.1 原生环境

Node.js入门:前后端模块的异同

通常有一些模块可以同时适用于前后端,但是在浏览器端通过script标签的载入JavaScript文件的方式与Node.js不同.Node.js在载入到最终的执行中,进行了包装,使得每个文件中的变量天然的形成在一个闭包之中,不会污染全局变量.而浏览器端则通常是裸露的JavaScript代码片段.所以为了解决前后端一致性的问题,类库开发者需要将类库代码包装在一个闭包内.以下代码片段抽取自著名类库underscore的定义方式. 1 (function () { 2 // Establish the

node.js 创建第一个web应用

安装node.js   从http://nodejs.org/ 下载安装程序进行安装. 安装后从开始菜单启动: Node.js command prompt 安装web开发框架Express 如果需要代理访问网络,先用下面的命令设置代理: > npm config set proxy=http://192.168.1.1:8080 运行下面命令进行安装express: > npm install express 执行下面命令,安装可执行程序: > npm install -g [emai

node.js之十大Web框架

之前接触过Node.js是因为好奇大前端越来越能干了,连我后台的饭碗都要抢了,太嚣张了,于是我想打压打压它,然后就这样接触它了.再到后来是因为Settings-Sync插件二次开发,我需要用node.js造一个mock server,而当时在开源项目上找到一个模拟github rest api的node.js服务端程序,然后我就在此基础上开发.从工作中学习有应用场景有目的性,果然还是学的要快很多. 今天之所以要说一说node.js的十大Web框架,主要是觉得以后针对VsCode开发或者是我自己的

Hello Node.js之搭建一个web服务器

Node.js简述 Nodejs 是JavaScript运行时,解释器是C/C++写的,基于ChromeV8引擎, 事件驱动,非阻塞I/O模型.本系列目前参考了Node.js官网,慕课网Scott的Node.js基础,<Node即学即用>图灵系列,以及可能的网上公开资源. Nodejs包管理器是npm 包就是别人写好的库. Nodejs提供了fs,http等内置对象,操作磁盘文件.搭建服务器. 特征:单线程.事件驱动.异步非阻塞I/O模型. Node.js安装 官网安装Node.js,自带np