node.js当中的http内置模块能够用于建立http服务器与http客户端。css
const http = require('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('');
html
用server
这个自定义的变量来表示建立的服务器来监听某个指定的端口号。server.listen(3000,'192.168.155.1');
外界客户端能够经过这个ip
地址和端口号来访问这个服务器。node
此时表示该服务器处于挂起的状态,此时在浏览器当中输入对应的ip
地址与端口号便可获得服务端响应的内容。chrome
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
地址信息。浏览器
因为在经过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');
如上图所示,咱们经过req.url
能够获得用户完整的请求地址,咱们能够利用内置的url
模块对用户的请求地址进行解析。函数
const url = require('url');
url.parse(req.url)
该方法经常使用的是把一个完整的url
地址分解为一个对象。ui
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');
其中最经常使用的是url.parse(req.url).pathname
获得一个文件路径的字符串,以/
开头,而且不包括查询部分的内容。使用url.parse(req.url).query
能够获得一个查询部分的字符串。其中url.parse()
方法的第二个参数是true
,能够将全部的查询变为对象形式。url
console.log(url.parse(req.url,true).query);
经过这种方式能够快速获得客户端经过GET
方式向服务器提交的数据。spa