download:14 小时吃透 Spring5 新个性, 重点解说 WebFlux 响应式编程
前端 er,什么时候,你想写一个 HTTP 服务器?
当你第一次接触工程化的我的项目时,看到我的项目控制台正在 building,过一会忽然跳出一个 URL 地址,你点开它竟然是你刚写好的网页,好神奇。
当你接后端伙伴的接口时,你把数据带去,接口居然给你返回 500 谬误;你去找后端,后端说这样传不行,你不晓得为啥不行,反正依照他说的改完,返回 200 胜利了。
有时候你的申请莫名其妙的就跨域了,后端说让你们本人解决,你就找呀找解决方案。然而为什么会跨域?后端怎么配置的,你也不分明。
终于有一天,你痛定思痛,决定改过自新,肯定要本人搭一个 HTTP 服务器,彻底理清这外面的弯弯绕绕,从此回绝被忽悠,回绝做只听命令的大头兵。
然而话说回来了,怎么动手呢?
别急,这都给您备好啦。写 HTTP 服务器须要后端语言,不用说,天然首选 Node.js。
上面咱们基于 Node.js 的 http 模块,一起搭建一个的 HTTP 服务器。
http 模块
一个超简略的 HTTP web 服务器的示例:
const http = require('http')
const server = http.createServer((request, response) => {
response.statusCode = 200
response.end('hello world')
})
server.listen(3000)
这里引入了 http 模块,提供了 createServer 办法,传入一个回调函数,创立了一个服务器。
当初把代码写进 index.js,再超简略的把它运行起来:
$ node index.js
关上浏览器,输出 http://localhost:3000,就能看到网页显示的 hello world 了。
代码分析
http.createServer 办法的参数是一个回调函数,这个回调函数有两个参数 —— 它们是 HTTP 服务器的外围。
第一个参数是申请对象 request,第二个参数是响应对象 response。你能够把它们看作两个袋子,一个袋子里装着申请相干的数据,一个袋子里装着响应相干的操作。
request 蕴含了具体的申请数据,也就是咱们前端调接口传递过去的数据。通过它能够获取申请头,申请参数,申请办法等等。
response 次要用于响应相干的设置和操作。什么是响应?就是我收到了客户端的申请,我能够设置状态码为 200 并返给前端数据;或者设置状态码为 500 并返给前端谬误。
总之一句话,调用接口返回什么,是由 response 决定的。
事实上,createServer 返回的是一个 EventEmitter,因而下面的写法等同于这样:
const http = require('http')
const server = http.createServer()
server.on('request', (request, response) => {
response.statusCode = 200
response.end('hello world')
}).listen(3000)