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 delete操作符应用实例
Jan 13 Javascript
document.getElementById介绍
Sep 13 Javascript
jQuery 回调函数(callback)的使用和基础
Feb 26 Javascript
jQuery模拟新浪微博首页滚动效果的方法
Mar 11 Javascript
RequireJS入门一之实现第一个例子
Sep 30 Javascript
解决js图片加载时出现404的问题
Nov 30 Javascript
jQuery插件EasyUI校验规则 validatebox验证框
Nov 29 Javascript
bootstrap datepicker限定可选时间范围实现方法
Sep 28 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
Mar 01 Javascript
微信小程序实现图片上传、删除和预览功能的方法
Dec 18 Javascript
Javascript操作select控件代码实例
Feb 14 Javascript
JS严格模式原理与用法实例分析
Apr 27 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
实用函数10
2007/11/08 PHP
CodeIgniter实现更改view文件夹路径的方法
2014/07/04 PHP
ThinkPHP实现将SESSION存入MYSQL的方法
2014/07/22 PHP
thinkphp3.x自定义Action、Model及View的简单实现方法
2016/05/19 PHP
php cookie 详解使用实例
2016/11/03 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
2017/05/02 PHP
详解cookie验证的php应用的一种SSO解决办法
2017/10/20 PHP
php-fpm服务启动脚本的方法
2018/04/27 PHP
tp5 实现列表数据根据状态排序
2019/10/18 PHP
IE中直接运行显示当前网页中的图片 推荐
2006/08/31 Javascript
YUI 读码日记之 YAHOO.lang.is*
2008/03/22 Javascript
javascript textarea光标定位方法(兼容IE和FF)
2011/03/12 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
2013/11/07 Javascript
使用jQuery处理AJAX请求的基础学习教程
2016/05/10 Javascript
Javascript oop设计模式 面向对象编程简单实例介绍
2016/12/13 Javascript
jQuery Easyui datagrid连续发送两次请求问题
2016/12/13 Javascript
解决ajax不能访问本地文件问题(利用js跨域原理)
2017/01/24 Javascript
angular中的cookie读写方法
2017/08/02 Javascript
Vuejs实现购物车功能
2017/11/05 Javascript
利用Node.js如何实现文件循环覆写
2019/04/05 Javascript
js中console在一行内打印字符串和对象的方法
2019/09/10 Javascript
Python中IPYTHON入门实例
2015/05/11 Python
windows下Python实现将pdf文件转化为png格式图片的方法
2017/07/21 Python
Python针对给定列表中元素进行翻转操作的方法分析
2018/04/27 Python
用Python实现读写锁的示例代码
2018/11/05 Python
python sort、sort_index方法代码实例
2019/03/28 Python
Flask 上传自定义头像的实例详解
2020/01/09 Python
工程管理专业毕业生自荐信
2014/01/24 职场文书
大班开学家长寄语
2014/04/04 职场文书
小学班主任寄语大全
2014/04/04 职场文书
庆祝国庆节演讲稿2014
2014/09/19 职场文书
政风行风自查自纠报告
2014/10/21 职场文书
四年级小学生评语
2014/12/26 职场文书
2015年房产销售工作总结范文
2015/05/22 职场文书
2015领导干部廉洁自律工作总结
2015/07/23 职场文书
table设置超出部分隐藏,鼠标移上去显示全部内容的方法
2022/12/24 HTML / CSS