获取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. vue分页控件

    下载:https://pan.baidu.com/s/1c125Vgc 一个简单的分页控件: 自动加载模式: 手动加载模式: loading图标使用了iconfont: 主要方法: beginRefr ...

  2. Petrozavodsk Winter Camp, Andrew, 2014, Dichromatic Trees

    条件: 1:每个红色节点的儿子都是黑色节点 2.每个叶子到根路径上的黑点数相等,等于某个常数,称作树的black height 求给定black height和节点数的符合条件的方案数 $black_ ...

  3. selenium选择器_css属性选择器

    搜索 <button class="btn-search tb-bg" type="submit" data-spm-click="gostr= ...

  4. Cassandra集群:一,搭建一个三节点的集群

    环境准备 JDK1.8 http://download.oracle.com/otn/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jdk-8 ...

  5. python -- 面向对象-成员

    1.成员       在类中,你能写的所有内容都是类的成员   2.变量          1.实例变量:由对象去访问的变量,一般使用是  对象 . 属性 class Person: def __in ...

  6. 一次完整的http事务的过程

    1.域名解析 2.发起TCP三次握手 3.建立TCP连接以后发起http请求 4.服务器端响应请求,浏览器得到html代码 5.浏览器解析html代码并请求html中的资源 6.浏览器对页面进行渲染呈 ...

  7. learning makefile multiple target

  8. java截取字符串,第4位以后的字符串用*代替

    public class F { public static void main(String[] args) { /**截取字符串,第4位以后的字符串用*代替*/ String s = " ...

  9. JS设计模式之工厂模式

    1 什么是工厂模式? 工厂模式是用来创建对象的一种最常用的设计模式.我们不暴露创建对象的具体逻辑,而是将将逻辑封装在一个函数中,那么这个函数就可以被视为一个工厂.工厂模式根据抽象程度的不同可以分为: ...

  10. Linux之expr命令详解

    expr命令: expr命令是一个手工命令行计数器,用于在UNIX/LINUX下求表达式变量的值,一般用于整数值,也可用于字符串. –格式为: expr Expression(命令读入Expressi ...