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 相关文章推荐
经典的解除许多网站无法复制文字的绝招
Dec 31 Javascript
[原创]js获取数组任意个不重复的随机数组元素
Mar 15 Javascript
JS短路原理的应用示例 精简代码的途径
Dec 13 Javascript
jQuery中bind()方法用法实例
Jan 19 Javascript
Javascript中的几种URL编码方法比较
Jan 23 Javascript
AngularJS中关于ng-class指令的几种实现方式详解
Sep 17 Javascript
详解获取jq ul第一个li定位的四种解决方案
Nov 23 Javascript
浅析JS中常用类型转换及运算符表达式
Jul 23 Javascript
JavaScript requestAnimationFrame动画详解
Sep 14 Javascript
javascript回调函数详解
Feb 06 Javascript
Vue基本使用之对象提供的属性功能
Apr 30 Javascript
封装一下vue中的axios示例代码详解
Feb 16 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
是否存在第一台收音机的说法
2021/03/01 无线电
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
2014/04/24 PHP
ThinkPHP的L方法使用简介
2014/06/18 PHP
PHP查看当前变量类型的方法
2015/07/31 PHP
JavaScript 快捷键设置实现代码
2009/03/13 Javascript
JQuery Easyui Tree的oncheck事件实现代码
2010/05/28 Javascript
Jquery刷新页面背景图片随机变换的实现方法
2013/03/15 Javascript
nodejs命令行参数处理模块commander使用实例
2014/09/17 NodeJs
Jquery $.getJSON 在IE下的缓存问题解决方法
2014/10/10 Javascript
Bootstrap开发实战之响应式轮播图
2016/06/02 Javascript
AngularJS表格详解及示例代码
2016/08/17 Javascript
微信小程序  Mustache语法详细介绍
2016/10/27 Javascript
js如何判断是否在iframe中及防止网页被别站用iframe嵌套
2017/01/11 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
2017/02/14 Javascript
从零学习node.js之mysql数据库的操作(五)
2017/02/24 Javascript
vuex实现及简略解析(小结)
2019/03/01 Javascript
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
2020/04/01 jQuery
webpack+vue-cil 中proxyTable配置接口地址代理操作
2020/07/18 Javascript
[02:33]2018DOTA2亚洲邀请赛赛前采访——LGD
2018/04/04 DOTA
Python字符串、元组、列表、字典互相转换的方法
2016/01/23 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
2017/07/24 Python
基于numpy.random.randn()与rand()的区别详解
2018/04/17 Python
python自动发送邮件脚本
2018/06/20 Python
Python 2.7中文显示与处理方法
2018/07/16 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
2019/11/19 Python
python 字典item与iteritems的区别详解
2020/04/25 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
2020/09/24 Python
美国男士和女士奢侈品折扣手表购物网站:Certified Watch Store
2018/06/13 全球购物
英语求职信范文
2014/05/23 职场文书
对外汉语教师推荐信
2015/03/27 职场文书
会议通知范文
2015/04/15 职场文书
离婚律师函范本
2015/05/27 职场文书
房贷收入证明范本
2015/06/12 职场文书
尝试使用Python爬取城市租房信息
2022/04/12 Python
最新动漫情报:2022年7月新番定档超过30部, OVERLORD骨王第四季也在其中噢
2022/05/04 日漫
win10如何快速切换窗口 win10切换窗口快捷键分享
2022/07/23 数码科技