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 相关文章推荐
jQuery对表单元素的取值和赋值操作代码
May 19 Javascript
js下拉框二级关联菜单效果代码具体实现
Aug 03 Javascript
使用CSS3的scale实现网页整体缩放
Mar 18 Javascript
JS基于Mootools实现的个性菜单效果代码
Oct 21 Javascript
微信jssdk在iframe页面失效问题的解决措施
Mar 03 Javascript
JS正则表达式修饰符中multiline(/m)用法分析
Dec 27 Javascript
jQuery手风琴的简单制作
May 12 jQuery
es6学习之解构时应该注意的点
Aug 29 Javascript
详解Node 定时器
Feb 26 Javascript
解决layer.open后laydate失效的问题
Sep 06 Javascript
详解JavaScript 事件流
Sep 02 Javascript
Node.js 中如何收集和解析命令行参数
Jan 08 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
YiiFramework入门知识点总结(图文教程)
2015/12/28 PHP
PHP+Ajax实现验证码的实时验证
2016/07/20 PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
2016/09/23 PHP
php获取给定日期相差天数的方法分析
2017/02/20 PHP
js实现页面打印功能实例代码(附去页眉页脚功能代码)
2009/12/15 Javascript
详解JS 比较两个Json对象的值是否相等的实例
2013/11/20 Javascript
JavaScript使用slice函数获取数组部分元素的方法
2015/04/06 Javascript
jQuery实现的多张图无缝滚动效果【测试可用】
2016/09/12 Javascript
纯JavaScript 实现flappy bird小游戏实例代码
2016/09/27 Javascript
详解weex默认webpack.config.js改造
2018/01/08 Javascript
JavaScript创建对象方法实例小结
2018/09/03 Javascript
使用vuex存储用户信息到localStorage的实例
2019/11/11 Javascript
vue实现标签云效果的示例
2020/11/09 Javascript
python进阶教程之动态类型详解
2014/08/30 Python
Python 的描述符 descriptor详解
2016/02/27 Python
在Python dataframe中出生日期转化为年龄的实现方法
2018/10/20 Python
对python中基于tcp协议的通信(数据传输)实例讲解
2019/07/22 Python
python3读取csv文件任意行列代码实例
2020/01/13 Python
Python reversed函数及使用方法解析
2020/03/17 Python
阿根廷票务网站:StubHub阿根廷
2018/04/13 全球购物
美国帽子俱乐部商店:Hat Club
2019/07/05 全球购物
可爱的童装和鞋子:Fabkids
2019/08/16 全球购物
Alexandre Birman美国官网:亚历山大·伯曼
2019/10/30 全球购物
Web Service面试题:如何搭建Axis2的开发环境
2012/06/20 面试题
如何用SQL语句进行模糊查找
2015/09/25 面试题
元旦晚会主持词
2014/03/24 职场文书
市场开发计划书
2014/05/07 职场文书
推荐信怎么写
2014/05/09 职场文书
临床专业自荐信
2014/06/22 职场文书
会计试用期自我评价
2014/09/19 职场文书
2014年护理部工作总结
2014/11/14 职场文书
2014年电话销售工作总结
2014/12/01 职场文书
医药公司采购员岗位职责
2015/04/03 职场文书
创新创业项目计划书该怎样写?
2019/08/13 职场文书
python通过函数名调用函数的几种方法总结
2021/06/07 Python
Win11使用CAD卡顿或者致命错误怎么办?Win11无法正常使用CAD的解决方法
2022/07/23 数码科技