node 第十章 get post编程实现

http get

1: .get(url, function(req, respones) {});    req.query   get传的参数表 ? 开始, & 分成不同的key-value;

2: respones.send(数据); 回数据给客户端,底层会封装成满足http响应格式的数据包;

3: node.js作为客户端发送http get请求;

4: http.IncomingMessage 获得body监听 data事件

;

// get请求的参数,是带在URL的地址上面的
function http_get(ip, port, url, params, callback) {
   // step1,创建一个 http.ClientRequest
   var options = {
      host: "127.0.0.1",
      port: port,
      path: url + "?" + params,
      method: "GET"
   };

   // 当有请求返回的时候,参数就会被传递为http.IncomingMessage
   var req = http.request(options, function(incoming_msg) {
      console.log("respones status " + incoming_msg.statusCode);

      // 监听IncomingMessage的data事件,当收到服务器发过来的数据的时候,触发这个事件
      incoming_msg.on("data", function(data) {
         if (incoming_msg.statusCode === 200) {
            callback(true, data);
         }
      });
       
   });

   // 把这个请求发送出去
   req.end();
}

http post
 

1: .post(url, function(req, respones) {});    req.query   传的参数表 ? 开始, & 分成不同的key-value;    req.监听data,获取post传送的body数据;

2: respones.send(数据); 回数据给客户端,底层会封装成满足http响应格式的数据包;

3: node.js作为客户端发送http post请求; headers: { "Content-Type": “类型参见http标准”, application/x-www-form-urlencoded “Content-Length”: body的数据长度}

4: http.IncomingMessage 获得body监听 data事件;

// post可以带body数据传到服务器
function http_post(ip, port, url, params, body, callback) {
   // step1,创建一个 http.ClientRequest
   var options = {
      host: "127.0.0.1",
      port: port,
      path: url + "?" + params,
      method: "POST",

      headers: {
         "Content-Type": "application/x-www-form-urlencoded",
         "Content-Length": body.length
      }
   };

   var req = http.request(options, function(incoming_msg) {
      console.log("respones status " + incoming_msg.statusCode);

      // 监听IncomingMessage的data事件,当收到服务器发过来的数据的时候,触发这个事件
      incoming_msg.on("data", function(data) {
         if (incoming_msg.statusCode === 200) {
            callback(true, data);
         }
      });
       
   });

   // step2 写入body数据
   req.write(body);

   // 发送请求
   req.end();
}

 

常用返回码

/*
   [100] = "Continue",
      [101] = "Switching Protocols",
      [200] = "OK",
      [201] = "Created",
      [202] = "Accepted",
      [203] = "Non-Authoritative Information",
      [204] = "No Content",
      [205] = "Reset Content",
      [206] = "Partial Content",
      [300] = "Multiple Choices",
      [301] = "Moved Permanently",
      [302] = "Found",
      [303] = "See Other",
      [304] = "Not Modified",
      [305] = "Use Proxy",
      [307] = "Temporary Redirect",
      [400] = "Bad Request",
      [401] = "Unauthorized",
      [402] = "Payment Required",
      [403] = "Forbidden",
      [404] = "Not Found",
      [405] = "Method Not Allowed",
      [406] = "Not Acceptable",
      [407] = "Proxy Authentication Required",
      [408] = "Request Time-out",
      [409] = "Conflict",
      [410] = "Gone",
      [411] = "Length Required",
      [412] = "Precondition Failed",
      [413] = "Request Entity Too Large",
      [414] = "Request-URI Too Large",
      [415] = "Unsupported Media Type",
      [416] = "Requested range not satisfiable",
      [417] = "Expectation Failed",
      [500] = "Internal Server Error",
      [501] = "Not Implemented",
      [502] = "Bad Gateway",
      [503] = "Service Unavailable",
      [504] = "Gateway Time-out",
      [505] = "HTTP Version not supported",
}
*/

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值