http模块提供的request和response对象与http协议打交道,处理tcp链接,解析http,从而实现一个http服务器。
request对象封装了HTTP请求,我们调用request对象的属性和方法就可以拿到所有HTTP请求的信息;
response对象封装了HTTP响应,我们操作response对象的方法,就可以把HTTP响应返回给浏览器。
新建app.js,代码如下:
///最简单的node.js搭建的服务器:
'use strict';
let http=require('http');//必须首先引入http模块
//http.createServer()返回一个server实例,必须参数req,res,回调函数表示接受到请求之后做的事情,req表示请求,res表示相应
let server=http.createServer((req,res)=>{
//服务的响应头设置,text/plain为纯文本;text/html为html内容;text/css为样式;image/jpg为图片头.200表示响应成功状态
res.writeHead(200,{'Content-Type':'text/html;charset=UTF8'});
//每一次的请求回调里面必须要有res.end(),表示这次请求完成,如果没有,则请求一直旋转知道浏览器响应超时。end之前可以无限次数的使用res.write()方法。res.end()里面参数必须是字符串格式,res.end(1+2)则会报错!
res.end('<h1>wbiokr</h1>')
});
//server即为返回的实力,监听的端口号8080
server.listen(8080);//server.listen(8080,'127.0.0.1')为全称
console.log('we are listening 8080');
此时node app
,便开启服务器,浏览器输入127.0.0.1:8080
即可相应。
request对象
用于在createServe的回调函数中获取url,进行路由判断
req.url ;///表示用户的请求URL地址,可以用于做路由,/ 表示根目录,会忽略锚点和参数。问号后面的参数通过querystring模块进行处理;而URL模块处理整个url
url模块
用于处理request对象获取的url字符串
url.parse(urlStr) ;///解析URL对象,返回JSON对象包括protocol、port、hash、pathname、query等。
url.parse(urlStr,true) ;//传入第二个参数且为TRUE的时候,query这一属性会被解析为对象---如同querystring模块。
url.format(urObj) ;//格式化urlObj中各属性,如同path模块中的path.normailze
url.resolve(str1,str2) ;//拼接个参数,返回一个字符串
querystring模块
字符串与 对象互相转换方法
querystring.stringify(obj) ;//方法类似JSON.stringify 。根据&和=进行拼接
querystring.parse(str) ;//方法类似JSON.parse. 根据&和=进行分割
地址栏url被parse之后对象的主要属性
protocol: 'http' ;
hostname: 'localhost:1100';
port: '1100' ;
hash: '#hash' ;
search: '?query=string';
query: 'query=string';
pathname:'/a/b/c';
path:'/a/b/c?query=string' ;
href: 'http://localhost:1100/a/b/c?query=string#hash'