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 相关文章推荐
广告切换效果(缓动切换)
May 27 Javascript
extJs 文本框后面加上说明文字+下拉列表选中值后触发事件
Nov 27 Javascript
jquery的冒泡事件的阻止与允许(三种实现方法)
Feb 01 Javascript
jquery 模板的应用示例
Nov 12 Javascript
jQuery+Ajax实现无刷新操作
Jan 04 Javascript
Jquery实现简单的轮播效果(代码管用)
Mar 14 Javascript
微信小程序  Mustache语法详细介绍
Oct 27 Javascript
利用forever和pm2部署node.js项目过程
May 10 Javascript
微信小程序tabbar不显示解决办法
Jun 08 Javascript
通过源码分析Vue的双向数据绑定详解
Sep 24 Javascript
Vue表单类的父子组件数据传递示例
May 03 Javascript
JS插件amCharts实现绘制柱形图默认显示数值功能示例
Nov 26 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导入模块文件分享
2015/03/17 PHP
php文件操作相关类实例
2015/06/18 PHP
php实现概率性随机抽奖代码
2016/01/02 PHP
Redis构建分布式锁
2017/03/28 PHP
jQuery实现类似标签风格的导航菜单效果代码
2015/08/25 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
2016/08/01 Javascript
jQuery EasyUI 右键菜单--关闭标签/选项卡的简单实例
2016/10/10 Javascript
不使用script导入js文件的几种方法
2016/10/27 Javascript
原生JS实现图片翻书效果
2017/02/16 Javascript
Underscore之Array_动力节点Java学院整理
2017/07/10 Javascript
JS实现的简单标签点击切换功能示例
2017/09/21 Javascript
vue的常用组件操作方法应用分析
2018/04/13 Javascript
vue路由跳转传参数的方法
2019/05/06 Javascript
JS开发 富文本编辑器TinyMCE详解
2019/07/19 Javascript
node静态服务器实现静态读取文件或文件夹
2019/12/03 Javascript
基于Echarts图表在div动态切换时不显示的解决方式
2020/07/20 Javascript
Vue仿Bibibili首页的问题
2021/01/21 Vue.js
python使用chardet判断字符串编码的方法
2015/03/13 Python
Python面向对象编程中的类和对象学习教程
2015/03/30 Python
详解Python设计模式编程中观察者模式与策略模式的运用
2016/03/02 Python
全面了解Python环境配置及项目建立
2016/06/30 Python
Python之Scrapy爬虫框架安装及使用详解
2017/11/16 Python
使用Python+Splinter自动刷新抢12306火车票
2018/01/03 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
2019/12/11 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
2020/01/25 Python
python如何进入交互模式
2020/07/06 Python
python 安装移动复制第三方库操作
2020/07/13 Python
Python如何实现感知器的逻辑电路
2020/12/25 Python
CSS3字体效果的设置方法小结
2016/06/13 HTML / CSS
英国发展最快的在线超市之一:Click Marketplace
2021/02/15 全球购物
2015年五一劳动节活动总结
2015/02/09 职场文书
好段摘抄大全(48句)
2019/08/08 职场文书
如何判断微信付款码和支付宝付款码
2021/04/01 PHP
Win10系统下配置Java环境变量
2021/06/13 Java/Android
部分武汉产收音机展览
2022/04/07 无线电
js 实现验证码输入框示例详解
2022/09/23 Javascript