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知识点收藏
Feb 22 Javascript
脚本之家贴图转换+转贴工具用到的js代码超级推荐
Apr 05 Javascript
JavaScript创建一个欢迎cookie弹出窗实现代码
Mar 15 Javascript
Javascript倒计时页面跳转实例小结
Sep 11 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
Jan 27 Javascript
数据结构中的各种排序方法小结(JS实现)
Jul 23 Javascript
JavaScript提高网站性能优化的建议(二)
Jul 24 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
Nov 28 Javascript
AngularJS框架的ng-app指令与自动加载实现方法分析
Jan 04 Javascript
Reactjs实现通用分页组件的实例代码
Jan 19 Javascript
vue实现组件之间传值功能示例
Jul 13 Javascript
使用js获取身份证年龄的示例代码
Dec 11 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
Cygwin中安装PHP方法步骤
2015/07/04 PHP
PHP可变函数学习小结
2015/11/29 PHP
ThinkPHP中Widget扩展的两种写法及调用方法详解
2017/05/04 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
2019/10/01 PHP
javaScript Array(数组)相关方法简述
2009/07/25 Javascript
autoIMG 基于jquery的图片自适应插件代码
2011/03/12 Javascript
关于JavaScript中原型继承中的一点思考
2012/07/25 Javascript
浅谈jquery事件处理
2015/04/24 Javascript
以JavaScript来实现WordPress中的二级导航菜单的方法
2015/12/14 Javascript
jQuery Easyui 下拉树组件combotree
2016/12/16 Javascript
从零学习node.js之简易的网络爬虫(四)
2017/02/22 Javascript
使用JavaScript实现表格编辑器(实例讲解)
2017/08/02 Javascript
React进阶学习之组件的解耦之道
2017/08/07 Javascript
JS库之Waypoints的用法详解
2017/09/13 Javascript
浅谈JavaScript中的属性:如何遍历属性
2017/09/14 Javascript
vue实现通讯录功能
2018/07/14 Javascript
vue实现手机号码的校验实例代码(防抖函数的应用场景)
2019/09/05 Javascript
原生js+ajax分页组件
2020/01/30 Javascript
如何利用node转发请求详解
2020/09/17 Javascript
Python日期操作学习笔记
2008/10/07 Python
python3+PyQt5实现自定义流体混合窗口部件
2018/04/24 Python
python实现决策树ID3算法的示例代码
2018/05/30 Python
解决Python3中的中文字符编码的问题
2018/07/18 Python
python之super的使用小结
2018/08/13 Python
PYTHON发送邮件YAGMAIL的简单实现解析
2019/10/28 Python
基于python修改srt字幕的时间轴
2020/02/03 Python
Python单链表原理与实现方法详解
2020/02/22 Python
matplotlib对象拾取事件处理的实现
2021/01/14 Python
python实现学生通讯录管理系统
2021/02/25 Python
初婚未育未抱养证明
2014/01/12 职场文书
实习评语大全
2014/04/26 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书
律师函格式范本
2015/05/27 职场文书
《坐井观天》教学反思
2016/02/18 职场文书
用python自动生成日历
2021/04/24 Python
Golang 遍历二叉树
2022/04/19 Golang