获取GET请求内容

实例

//引入模块
var http=require('http');
var urls=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(3001);

//下面的列子是 在nodejs下 创建客户端和服务端

知识点:http模块提供了两个函数http.request(post请求)和http.get(get请求),功能是作为客户端向HTTP服务器发起请求。

  
            1.http.request(options,callback)发起HTTP请求,接受两个参数,option是一个类似关联数组的对象,表示请求的参数,callback是请求的回调函数,option常用的参数如下
                host:请求网站的域名或IP地址
                port:请求网站的端口,默认是80,
                method:请求方法,模式是GET/POST
                path:请求的相对于根的路径,默认是"/"。QueryString应该包含在其中,例如/search?query=marico
                headers:一个关联数组对象,为请求头的内容
                callback传递一个参数,为http.ClientResponse的实例
 
             2.http.get(options,callback) http模块还提供了一个更加简便的方法用于处理GET请求:http.get。它是http.request的简化版,唯一的区别在于http.get自动将请求方法设为GET请求,同时不需要手动调用req.end();
 

var http=require('http');
var url=require('url');
var util=require('util');
//启动服务
http.createServer(function(req,res){
 console.log('请求到来,解析参数');
 var params=url.parse(req.url,true);
 console.log('解析完成');
 console.log(util.inspect(params));//得到是具体的url信息
 console.log('向客户端返回');
 res.end(params.query.name);//res.write(params.query.name); 这边是向客户端发生回复信息  触发客户端的data事件得到data数据
}).listen(3000);

//客户端请求
var request=http.get({
 host:'localhost',
 path:'/user?name=marico&age=21',
 port:3000},function(res){
 res.setEncoding('utf-8');
 res.on('data',function(data){
  console.log(' 服务端相应回来的数据为:'+data);
 })
});

获取 POST 请求内容

实例

//引入两个模块 http querystring
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 = "";
//将post请求的数据存储到body上
  req.on('data', function (chunk) {
    body += chunk;
  });
  req.on('end', function () {
   
    // 解析参数
    body = querystring.parse(body);
    //parse before:body->xx=11&yy=22形式    parse after body:{"xx":"11","yy":"22"}
    // 设置响应头部信息及编码
    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);

 
 
//下面的列子是nodejs 客户端服务端

var http=require('http');
var querystring=require('querystring');
//启动服务
http.createServer(function(req,res){
 console.log('请求到来,解析参数');
 //解析post请求
 var post='';
 req.on('data',function(chunk){
  post+=chunk;
 });
 req.on('end',function(){
  post=querystring.parse(post);
  //解析完成
  console.log('参数解析完成,返回name参数');
  res.end(post.name);
 });
}).listen(3000);

//客户端请求
var contents=querystring.stringify({
 name:'marico',
 age:21,
 address:'beijing'
});
//Ext.encode();
//声明请求参数
var options={
 host:'localhost',
 path:'/',
 port:3000,
 method:'POST',
 headers:{
  'Content-Type':'application/x-www-form-urlencoded',
  'Content-Length':contents.length
 }
};
//发送请求
var req=http.request(options,function(res){
 res.setEncoding('utf-8');
 res.on('data',function(data){ //等待服务端返回数据触发函数
  console.log('后台返回数据');
  console.log(data);
 })
});
req.write(contents);
//必须调用end()
req.end();

HTTP客户端/服务端 POST/GET的更多相关文章

  1. [并发并行]_[线程模型]_[Pthread线程使用模型之三 客户端/服务端模型(Client/Server]

    Pthread线程使用模型之三 客户端/服务端模型(Client/Server) 场景 1.在客户端/服务端模型时,客户端向服务端请求一些数据集的操作. 服务端执行执行操作独立的(多进程或跨网络)– ...

  2. win10操作系统下oracle11g客户端/服务端的下载安装配置卸载总结

    win10操作系统下oracle11g客户端/服务端的下载安装配置卸载总结 一:前提 注意:现在有两种安装的方式 1. oracle11g服务端(64位)+oracle客户端(32位)+plsql(3 ...

  3. Socket客户端/服务端简单实例

    1.client端 package demo.socket; import java.io.BufferedReader;import java.io.IOException;import java. ...

  4. FastSocket客户端/服务端通讯示例

    新建控制台项目,命名为Server 添加FastSocket.SocketBase,FastSocket.Server引用   Socket命令服务类: Sodao.FastSocket.Server ...

  5. java.net.SocketException:Software caused connection abort: recv failed 异常分析 +socket客户端&服务端代码

    java.net.SocketException:Software caused connection abort: recv failed 异常分析 分类: 很多的技术 2012-01-04 12: ...

  6. iOS开发推送--客户端 服务端

    1.推送过程简介 (1)App启动过程中,使用UIApplication::registerForRemoteNotificationTypes函数与苹果的APNS服务器通信,发出注册远程推送的申请. ...

  7. Android应用源码基于安卓的校园二手交易系统客户端+服务端+数据库

    该源码是校园二手交易系统应用带服务端,也是一个基于安卓和javaweb的校园二手交易系统,包括整套安卓客户端.javaweb服务端.mysql数据库,可以进行基本的列表显示帖子.显示帖子详情.用户注册 ...

  8. 利用TCP 客户端---->服务端 传送文件到指定路径,并返回一个友好的回馈

    首先盲写的一个传输文件的方法,但测试发现了一个非常不容易发现的问题,这里先说明一下. 错误的代码如下: package com.TCP.java; import java.io.File; impor ...

  9. cocos2d-lua ARPG手机游戏《烈焰遮天》(客户端+服务端+数据库)发布说明

    服务器发布流程及其规范1,环境准备        a, mvn命令行:从\\10.21.210.161\share\tools\apache-maven-3.1.1-bin.tar.gz取出安装包,  ...

  10. Python后端(一)——客户端/服务端

    网址组成(四部分) 协议      http, https(https 是加密的http) 主机      g.cn zhihu.com之类的网址 ,因此一般不用填写 路径      下面的「/」和「 ...

随机推荐

  1. SparkSql处理嵌套json数据

    一.数据准备: { "dc_id": "dc-101", "source": { "sensor-igauge": { ...

  2. LeetCode--016--最接近的三数之和(java)

    给定一个包括 n 个整数的数组 nums 和 一个目标值 target.找出 nums 中的三个整数,使得它们的和与 target 最接近.返回这三个数的和.假定每组输入只存在唯一答案. 例如,给定数 ...

  3. 『Numpy』内存分析_利用共享内存创建数组

    引.内存探究常用函数 id(),查询对象标识,通常返回的是对象的地址 sys.getsizeof(),返回的是 这个对象所占用的空间大小,对于数组来说,除了数组中每个值占用空间外,数组对象还会存储数组 ...

  4. openstack详细笔记-nova-glance-swift-cinder-keystone等

    一.openstack各大模块 1.openstack总架构图 http://3ms.huawei.com/km/blogs/details/2655265 2.nova 2.0架构图 2.1 nov ...

  5. 一个二维码如何自动识别是安卓(Android)还是苹果(IOS)

    思考问题: 通常,我们开发一个APP,有Android版本.IOS版本. 但是只有一个二维码?怎么办呢? 怎么让IOS用户扫描二维码下载IOS版本,Android用户扫描二维码下载到Android版本 ...

  6. 【IDE】我的花里胡哨VS

    我的 VS2017 效果图,花里胡哨但十分养眼,利于C/C++ Coding~ 一.主题设置 工具 → 扩展和更新 下载插件 Color Theme Editor for Visual Studio ...

  7. WIFI 万能钥匙万玉权:团队之中要有跨三界之外的“闲人” [转]

      在团队规模较小时,很多事情都可以变得特别简单.比如架构的选择,大部分情况下,最初的架构越简单越好,随着业务的演进,架构才不断完善. 连尚网络经历了从几人到上百人的管理过程,其自主创新研发的产品 W ...

  8. Python—列表操作

    列表 列表的使用: 列表是可变数据类型,因此列表的方法,都是直接修改列表原始值 list = ["panda","chimpanzee","zebra ...

  9. Eclipse中Server视图加载项目之后项目名后边有带括号的名字

    用习惯了eclipse工具,因为某种原因需要修改项目名称.结果选择项目,按“F2”成功修改后,使用tomcat进行web发布时,选择“Add and Remove”,发现名字还是以前那个项目名称.即使 ...

  10. fastTime从后台传过来显示格式的处理

    1.可以在控制台用syso查看 QuestionFeedbackView qfv = on_LineManageService.getBringupHead(projectNo);//qfv是一个内含 ...