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切换显示的效果实例代码
Feb 27 Javascript
用jQuery模拟select下拉框的简单示例代码
Jan 26 Javascript
解决自定义$(id)的方法与jquery选择器$冲突的问题
Jun 14 Javascript
jQuery中$.extend()用法实例
Jun 24 Javascript
IE9+已经不对document.createElement向下兼容的解决方法
Sep 14 Javascript
理解jquery事件冒泡
Jan 03 Javascript
JS Testing Properties 判断属性是否在对象里的方法
Oct 01 Javascript
Vue侧滑菜单组件——DrawerLayout
Dec 18 Javascript
在vue中使用axios实现post方式获取二进制流下载文件(实例代码)
Dec 16 Javascript
extjs4图表绘制之折线图实现方法分析
Mar 06 Javascript
Vue js with语句原理及用法解析
Sep 03 Javascript
vue-openlayers实现地图坐标弹框效果
Sep 24 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删除文件夹及其文件夹下所有文件的函数代码
2013/01/23 PHP
PHP连接MSSQL2008/2005数据库(SQLSRV)配置实例
2014/10/22 PHP
php实现微信公众平台账号自定义菜单类
2014/12/02 PHP
php修改文件上传限制方法汇总
2015/04/07 PHP
PHP树-不需要递归的实现方法
2016/06/21 PHP
js 本地预览的简单实现方法
2014/02/18 Javascript
jQuery中focus事件用法实例
2014/12/26 Javascript
js实现点击链接后延迟3秒再跳转的方法
2015/06/05 Javascript
javascript中对Date类型的常用操作小结
2016/05/19 Javascript
动态加载js、css的简单实现代码
2016/05/26 Javascript
ajax 提交数据到后台jsp页面及页面跳转问题
2017/01/19 Javascript
vue.js获取数据库数据实例代码
2017/05/26 Javascript
vue如何获取点击事件源的方法
2017/08/10 Javascript
浅谈Angularjs中不同类型的双向数据绑定
2018/07/16 Javascript
Angular(5.2->6.1)升级小结
2018/12/27 Javascript
JS栈stack类的实现与使用方法示例
2019/01/31 Javascript
vue单文件组件无法获取$refs的问题
2020/06/24 Javascript
JS实现简易日历效果
2021/01/25 Javascript
javascript实现点击产生随机图形
2021/01/25 Javascript
python基础教程之缩进介绍
2014/08/29 Python
举例讲解Python中的list列表数据结构用法
2016/03/12 Python
插入排序_Python与PHP的实现版(推荐)
2017/05/11 Python
解决Tensorflow使用pip安装后没有model目录的问题
2018/06/13 Python
python计算两个数的百分比方法
2018/06/29 Python
windows下pycharm安装、创建文件、配置默认模板
2018/07/31 Python
对Python3 * 和 ** 运算符详解
2019/02/16 Python
Python try except异常捕获机制原理解析
2020/04/18 Python
python自动打开浏览器下载zip并提取内容写入excel
2021/01/04 Python
Django如何重置migration的几种情景
2021/02/24 Python
三星英国官网:Samsung英国
2018/09/25 全球购物
幼儿园庆六一游园活动方案
2014/01/29 职场文书
初二学习计划书范文
2014/04/27 职场文书
银行员工犯错检讨书
2014/09/16 职场文书
环境工程专业毕业生求职信
2014/09/30 职场文书
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
2021/04/03 Javascript
CSS完成视差滚动效果
2021/04/27 HTML / CSS