node.js中express模块创建服务器和http模块客户端发请求


Posted in Javascript onMarch 06, 2019

首先下载express模块,命令行输入

npm install express

1.node.js中express模块创建服务端

在js代码同文件位置新建一个文件夹(www_root),里面存放网页文件等,就可以在浏览器中访问了

var express = require("express");
var path = require("path");
var app = express();
//目录  (当前目录下的www_root目录)
app.use(express.static(path.join(process.cwd(),"www_root")));
//监听
var server = app.listen(6080);
app.get('/', function (req, res) {
  //发送数据
  res.send('Hello World ~~~~~~~~~~~~!');
 });
// get, 处理响应
app.get("/login", function (request, respones) {
 console.log("/login comming"); 
 // 服务器收到请求后,获取客户端get操作参数
 console.log(request.query);
 // 服务器回信息给客户端
 respones.send("已连接上服务器~~");
});
app.post("/upload", function(request, respones) {
 console.log("/upload comming");
 // 获得url上传来的参数
 console.log(request.query);
 // 获得用户给我们发送过来的数据
 // 监听我们的data来获得
 request.on("data", function(data) {
 console.log(data.toString());
 respones.send("UPLOAD OK"); 
 });
});

2.http模块客户端发请求

(实例1)http_get测试

var http = require("http");
/*
callback(is_success, data/erro)
*/
function http_get(ip, port, url, params, callback){
  //创建一个http.ClientRequest对象
  var options = {
    host : ip,
    port : port,
    path : url+"?"+params,
    method : "GET",
  };
  var request = http.request(options,function(incoming_msg){
    console.log("get respones");
  });
  //发送这个请求
  request.end();
}
http_get("127.0.0.1", 6080, "/login", "uname=jadeshu&upw=123456", function(is_ok,data){
});

(实例2)http_get、http_post测试

var http = require("http");
/*
 [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",
}
*/
/*
callback(is_success, data/erro)
*/
// 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_get("127.0.0.1", 6080, "/login", "uname=blake&upwd=123456", function(is_ok, data) {
 if (is_ok) {
 console.log(data.toString());
 }
});
*/
// 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();
}
http_post("127.0.0.1", 6080, "/upload", "filename=my_file.txt", "Hello Htpp Post", function(is_ok, data) {
 if (is_ok) {
 console.log("upload_success", data.toString()); 
 }
});

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Javascript 相关文章推荐
图片格式的JavaScript和CSS速查手册
Aug 20 Javascript
JQuery插件Style定制化方法的分析与比较
May 03 Javascript
JS短路原理的应用示例 精简代码的途径
Dec 13 Javascript
一看就懂:jsonp详解
Jun 01 Javascript
微信小程序 Image API实例详解
Sep 30 Javascript
js CSS3实现卡牌旋转切换效果
Jul 04 Javascript
JavaScript 中Date对象的格式化代码方法汇总
Sep 06 Javascript
JS中精巧的自动柯里化实现方法
Dec 12 Javascript
详解webpack的proxyTable无效的解决方案
Jun 15 Javascript
微信小程序实现炫酷的弹出式菜单特效
Jan 28 Javascript
vue-router两种模式区别及使用注意事项详解
Aug 01 Javascript
javascript实现图片轮换动作方法
Aug 07 Javascript
微信小程序性能优化之checkSession的使用
Mar 06 #Javascript
详解在微信小程序的JS脚本中使用Promise来优化函数处理
Mar 06 #Javascript
移动端(微信等使用vConsole调试console的方法
Mar 05 #Javascript
利用Vconsole和Fillder进行移动端抓包调试方法
Mar 05 #Javascript
深入理解Puppeteer的入门教程和实践
Mar 05 #Javascript
[jQuery] 事件和动画详解
Mar 05 #jQuery
Vue 事件处理操作实例详解
Mar 05 #Javascript
You might like
PHP 模板高级篇总结
2006/12/21 PHP
php防止网站被刷新的方法汇总
2014/12/01 PHP
ThinkPHP 3.2 版本升级了哪些内容
2015/03/05 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
laravel学习教程之存取器
2016/07/30 PHP
Laravel timestamps 设置为unix时间戳的方法
2019/10/11 PHP
JScript的条件编译
2007/05/29 Javascript
File文件控件,选中文件(图片,flash,视频)即立即预览显示
2009/04/09 Javascript
利用Jquery实现可多选的下拉框
2014/02/21 Javascript
javascript实现简单查找与替换的方法
2015/07/22 Javascript
JS实现浏览器状态栏显示时间的方法
2015/10/27 Javascript
js弹出框、对话框、提示框、弹窗实现方法总结(推荐)
2016/05/31 Javascript
在Javascript操作JSON对象,增加 删除 修改的简单实现
2016/06/02 Javascript
微信JS-SDK坐标位置如何转换为百度地图坐标
2016/07/04 Javascript
zTree实现节点修改的实时刷新功能
2017/03/20 Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
2018/03/28 jQuery
详解使用VueJS开发项目中的兼容问题
2018/08/02 Javascript
微信小程序实现两边小中间大的轮播效果的示例代码
2018/12/07 Javascript
Python进阶学习之特殊方法实例详析
2017/12/01 Python
详解python函数传参是传值还是传引用
2018/01/16 Python
python实现Adapter模式实例代码
2018/02/09 Python
python面向对象入门教程之从代码复用开始(一)
2018/12/11 Python
Python饼状图的绘制实例
2019/01/15 Python
Python3.5局部变量与全局变量作用域实例分析
2019/04/30 Python
Python填充任意颜色,不同算法时间差异分析说明
2020/05/16 Python
python一些性能分析的技巧
2020/08/30 Python
美国著名首饰网站:BaubleBar
2016/08/29 全球购物
期末总结的个人自我评价
2013/11/02 职场文书
成功经营餐厅的创业计划书范文
2013/12/26 职场文书
煤矿班组长岗位职责
2013/12/29 职场文书
《小儿垂钓》教学反思
2014/02/23 职场文书
施工安全生产承诺书
2014/05/23 职场文书
中专生自荐信
2014/06/25 职场文书
2014年法务工作总结
2014/12/11 职场文书
学校元旦晚会开场白
2015/05/29 职场文书
学前班教学反思
2016/02/24 职场文书