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模块处理整个urlurl模块
用于处理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'