node.js中http模块和url模块的简单介绍


Posted in Javascript onOctober 06, 2017

前言

本文主要给大家介绍了关于node.js中http模块与url模块的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

一、http模块的简单介绍

node.js当中的http内置模块可以用于创建http服务器与http客户端。

1、引包

const http = require('http');

2、创建http服务器

var server = http.createServer((req,res)=>{

});

使用http的.createServer()方法可以用于返回一个http服务器实例,用自定义的server变量来接收。当该服务器每次接收到客户端的请求时触发调用其内部的回调函数,客户端每访问一次,都会触发调用一次。该回调函数有两个参数,req和res,顺序不可颠倒,req表示请求request,res表示响应response。

该回调函数内部语句的一定要有res.end(); ,因为如果没有,浏览器会认为一直没有得到服务器的响应,则浏览器一直会处于被挂起的状态,此时浏览器内部有一个超时机制,一旦超时,则会报告错误。
该回调函数当中的常用代码语句有:

设置响应头,res.writeHead(状态码,{});其中HTTP状态码常用的有200(成功返回)、404(找不到该页面,返回错误)等。第二个参数传入一个对象,用于设置响应文本的渲染解析类型。如常用的有对于html代码设置为,res.writeHead(200,{"Content-Type":"text/html;charset=UTF8"}); 。对于css文件的设置为res.writeHead(200,{"Content-Type":"text/css"}); 。对于图片的设置为res.writeHead(200,{"Content-Type":"image/jpg"}); 。对于纯文本的设置为res.writeHead(200,{"Content-Type":"text/plain"});设置返回的内容,res.write('');

3、让该服务器监听特定的端口号

用server这个自定义的变量来表示创建的服务器来监听某个指定的端口号。server.listen(3000,'192.168.155.1');外界客户端可以通过这个ip地址和端口号来访问这个服务器。

node.js中http模块和url模块的简单介绍

此时表示该服务器处于挂起的状态,此时在浏览器当中输入对应的ip地址与端口号即可得到服务端响应的内容。

node.js中http模块和url模块的简单介绍

二、url模块的简单介绍

const http = require('http');
var server = http.createServer((req,res)=>{
 console.log(req.url);
 res.end();
});
server.listen(3000,'192.168.155.1');

使用node命令开启这个服务器时,可以在控制台实时打印出访问的客户端的url地址信息。

node.js中http模块和url模块的简单介绍

由于在通过chrome浏览器的方式在进行访问时,每次访问都会默认附带一次/favicon.ico的请求,在解析客户端真正在浏览器的访问地址时,可以做如下处理:

const http = require('http');
var server = http.createServer((req,res)=>{
 if(req.url == '/favicon.ico'){
  return;
 };
 console.log(req.url);
 res.end();
});
server.listen(3000,'192.168.155.1');

node.js中http模块和url模块的简单介绍

如上图所示,我们通过req.url可以得到用户完整的请求地址,我们可以利用内置的url模块对用户的请求地址进行解析。

1、引包

const url = require('url');

2、常用的是url.parse(req.url)

该方法常用的是把一个完整的url地址分解为一个对象。

const http = require('http');
const url = require('url');
var server = http.createServer((req,res)=>{
 if(req.url == '/favicon.ico'){
  return;
 };
 console.log(url.parse(req.url));
 res.end();
});
server.listen(3000,'192.168.155.1');

node.js中http模块和url模块的简单介绍

其中最常用的是url.parse(req.url).pathname得到一个文件路径的字符串,以/开头,并且不包括查询部分的内容。使用url.parse(req.url).query可以得到一个查询部分的字符串。其中url.parse()方法的第二个参数是true,可以将所有的查询变为对象形式。

console.log(url.parse(req.url,true).query);

node.js中http模块和url模块的简单介绍

通过这种方式可以快速得到客户端通过GET方式向服务器提交的数据。

总结

以上就是这篇文章的全部内容,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
Js base64 加密解密介绍
Oct 11 Javascript
javascript中with()方法的语法格式及使用
Aug 04 Javascript
JavaScript中的console.log()函数详细介绍
Dec 29 Javascript
javascript中传统事件与现代事件
Jun 23 Javascript
js实现网页多级级联菜单代码
Aug 20 Javascript
JQuery核心函数是什么及使用方法介绍
May 03 Javascript
vue实现列表的添加点击
Dec 29 Javascript
使用vue如何构建一个自动建站项目
Feb 05 Javascript
Vue父子组建的简单通信之控制开关Switch的实现
Jun 04 Javascript
react-navigation之动态修改title的内容
Sep 26 Javascript
详解vue 路由跳转四种方式 (带参数)
Apr 28 Javascript
不刷新网页就能链接新的js文件方法总结
Mar 01 Javascript
你应该知道的几类npm依赖包管理详解
Oct 06 #Javascript
vue-cli构建项目使用 less的方法
Oct 04 #Javascript
浅谈Angular2 模块懒加载的方法
Oct 04 #Javascript
浅谈angular2路由预加载策略
Oct 04 #Javascript
浅谈Angular路由复用策略
Oct 04 #Javascript
React-Native之定时器Timer的实现代码
Oct 04 #Javascript
vuejs使用$emit和$on进行组件之间的传值的示例
Oct 04 #Javascript
You might like
PHP Pear 安装及使用
2009/03/19 PHP
解析PHP跳出循环的方法以及continue、break、exit的区别介绍
2013/07/01 PHP
PHP实现简单的新闻发布系统实例
2015/07/28 PHP
PHP高并发和大流量解决方案整理
2019/12/24 PHP
Mootools 1.2教程 正则表达式
2009/09/15 Javascript
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
2009/11/12 Javascript
jQuery 验证插件 Web前端设计模式(asp.net)
2010/10/17 Javascript
从零开始学习jQuery (十) jQueryUI常用功能实战
2011/02/23 Javascript
jquery创建一个ajax关键词数据搜索实现思路
2013/02/26 Javascript
在javascript中对于DOM的加强
2013/04/11 Javascript
12种不宜使用的Javascript语法整理
2013/11/04 Javascript
深入理解JavaScript高级之词法作用域和作用域链
2013/12/10 Javascript
jQuery实现下拉框左右选择的简单实例
2014/02/22 Javascript
js获取下拉列表的值和元素个数示例
2014/05/07 Javascript
JavaScript中的substr()方法使用详解
2015/06/06 Javascript
jQuery Validate表单验证插件 添加class属性形式的校验
2016/01/18 Javascript
jQuery选择器特殊字符与属性空格问题
2017/08/14 jQuery
详解vue 路由跳转四种方式 (带参数)
2019/04/28 Javascript
JS中FileReader类实现文件上传及时预览功能
2020/03/27 Javascript
jQuery实现带进度条的轮播图
2020/09/13 jQuery
[01:37]PWL S2开团时刻DAY1&2——这符有毒
2020/11/20 DOTA
Pyramid添加Middleware的方法实例
2013/11/27 Python
简单的抓取淘宝图片的Python爬虫
2014/12/25 Python
Python自定义进程池实例分析【生产者、消费者模型问题】
2016/09/19 Python
Python2/3中urllib库的一些常见用法
2017/12/19 Python
Python实现元素等待代码实例
2019/11/11 Python
Python内置方法和属性应用:反射和单例(推荐)
2020/06/19 Python
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
施华洛世奇意大利官网:SWAROVSKI意大利
2018/07/23 全球购物
绿色美容,有机护肤品和化妆品:Safe & Chic
2018/10/29 全球购物
如何实现jdbc性能优化
2012/07/30 面试题
与UNIX有关的几个名词
2015/09/17 面试题
路政管理毕业自荐书范文
2014/02/10 职场文书
升旗仪式演讲稿
2014/05/08 职场文书
2015年中个人总结范文
2015/03/10 职场文书
解决MySQL添加新用户-ERROR 1045 (28000)的问题
2022/03/03 MySQL