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 Excel操作知识点
Apr 24 Javascript
潜说js对象和数组
May 25 Javascript
JavaScript中for..in循环陷阱介绍
Nov 12 Javascript
javascript中的if语句使用介绍
Nov 20 Javascript
jquery实现未经美化的简洁TAB菜单效果
Aug 28 Javascript
jQuery Validation PlugIn的使用方法详解
Dec 18 Javascript
总结Javascript中数组各种去重的方法
Oct 04 Javascript
Angular.js之作用域scope'@','=','&'实例详解
Feb 28 Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
Mar 30 Javascript
原生JS实现简单的倒计时功能示例
Aug 30 Javascript
vue中利用simplemde实现markdown编辑器(增加图片上传功能)
Apr 29 Javascript
JavaScript的垃圾回收机制与内存管理
Aug 06 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
YB217、YB235、YB400浅听
2021/03/02 无线电
基于HTTP长连接的"服务器推"技术的php 简易聊天室
2009/10/31 PHP
解析PHP多种序列化与反序列化的方法
2013/06/06 PHP
解析左右值无限分类的实现算法
2013/06/20 PHP
ThinkPHP3.2.2的插件控制器功能简述
2014/07/09 PHP
网站防止被刷票的一些思路与方法
2015/01/08 PHP
Zend Framework动作控制器用法示例
2016/12/09 PHP
thinkPHP事务操作简单案例分析
2019/10/17 PHP
解决使用attachEvent函数时,this指向被绑定的元素的问题的方法
2007/08/13 Javascript
js判断undefined类型示例代码
2014/02/10 Javascript
jquery实现的随机多彩tag标签随机颜色和字号大小效果
2014/03/27 Javascript
JavaScript实现的双向跨域插件分享
2015/01/31 Javascript
javascript如何写热点图
2015/12/08 Javascript
基于javascript实现最简单的选项卡切换效果
2016/05/16 Javascript
详解vue表单验证组件 v-verify-plugin
2017/04/19 Javascript
让你彻底掌握es6 Promise的八段代码
2017/07/26 Javascript
JS实现浏览上传文件的代码
2017/08/23 Javascript
vue打包之后生成一个配置文件修改接口的方法
2018/12/09 Javascript
详解在Angular4中使用ng2-baidu-map的方法
2019/06/19 Javascript
VUE项目初建和常见问题总结
2019/09/12 Javascript
vuex 实现getter值赋值给vue组件里的data示例
2019/11/05 Javascript
Python遍历目录的4种方法实例介绍
2015/04/13 Python
virtualenv实现多个版本Python共存
2017/08/21 Python
解决win64 Python下安装PIL出错问题(图解)
2018/09/03 Python
对Python通过pypyodbc访问Access数据库的方法详解
2018/10/27 Python
python3.7 使用pymssql往sqlserver插入数据的方法
2019/07/08 Python
Python基于read(size)方法读取超大文件
2020/03/12 Python
pycharm Tab键设置成4个空格的操作
2021/02/26 Python
CSS3贝塞尔曲线示例:创建链接悬停动画效果
2020/11/19 HTML / CSS
下列程序在32位linux或unix中的结果是什么
2015/01/26 面试题
竞选班干部演讲稿100字
2014/08/20 职场文书
代领学位证书毕业证书委托书
2014/09/30 职场文书
网络管理员岗位职责
2015/02/12 职场文书
工资证明格式模板
2015/06/12 职场文书
浅谈python中的多态
2021/06/15 Python