当前位置: 首页 > 后端技术 > Node.js

前端实训-中级(48)-node10.x的HTTP模块和WEB开发框架介绍

时间:2023-04-04 00:52:36 Node.js

前端最基础的就是HTML+CSS+Javascript。掌握这三项技术算是入门,但也只是入门而已。现在前端开发的定义远不止于此。前端小课堂(HTML/CSS/JS),本着提高技术水平,夯实基础知识的中心思想,开课(每周四)。HTTP模块、WEB开发框架介绍、URL&querystringHTTP模块nodejs分为三个模块:HTTP、HTTPS、HTTP2,是不是秃了?consthttp=require('http');,作为一个普通的http/1API。Node.js中的HTTP接口旨在支持该协议的许多传统上难以使用的功能。特别是分块(也可能是分块编码)消息。该接口从不缓冲整个请求或响应,因此用户可以流式传输数据。可用作HTTP服务器或客户端。consthttp2=require('http2');,核心API提供了一个专门设计用于支持HTTP/2协议特性的低级接口。它不是专门为与现有的HTTP/1模块API兼容而设计的。当然,也有兼容的API。consthttps=require('https');,HTTPS是基于TLS/SSL的HTTP协议。在Node.js中,它被实现为一个单独的模块。客户端使用reason时,我一般使用axios来使用,//请求服务端http.get('http://www.lilnong.top/cors/node-http').on('response',(res/**http.IncomingMessage*/)=>{res.on('data',(buffer)=>{//这里应该拼接buffer而不是console.log('data',buffer.toString())})})对应axios我们可以写得更简单axios('http://www.lilnong.top/cors/node-axios').then(v=>v.data).then(data=>console.log(data))由于大多数请求都是没有请求体的GET请求,Node.js提供了这种方便的方法。该方法与http.request()的唯一区别是它将请求方法设置为GET并自动调用req.end()。由于http.ClientRequest部分中所述的原因,回调必须使用响应数据。当服务器使用//启动服务器时constproxy=http.createServer((req,res)=>{res.writeHead(200,{'Content-Type':'text/plain;charset=utf8'});res.end('响应内容');});//监听对应的端口proxy.listen(1337,'127.0.0.1',(...args)=>{console.log('listen',args)})我一般用express来启动服务。proxy.headersTimeout限制解析器等待接收完整HTTP请求标头的时间。如果不活动,则应用server.timeout中定义的规则。但是,如果标头发送速度非常慢(默认情况下,每2分钟最多一个字节),基于不活动的超时仍允许连接保持打开状态。为防止这种情况,每当标头数据到达时都会进行额外检查,并且自连接建立以来未经过server.headersTimeout毫秒。如果检查失败,则会在服务器对象上触发“超时”事件,并且(默认情况下)销毁套接字。有关如何自定义超时行为的详细信息,请参阅server.timeout。proxy.timeout考虑套接字超时的不活动毫秒数。值0禁用传入连接的超时行为。套接字超时逻辑是在连接时设置的,因此更改此值只会影响与服务器的新连接,而不影响任何现有连接。http2模块的核心API提供了一个低级接口,专门用于支持HTTP/2协议的特性。它不是专门为与现有的HTTP/1模块API兼容而设计的。当然,也有兼容的API。http2核心API在客户端和服务器之间比httpAPI更加对称。例如,大多数事件,如“error”、“connect”和“stream”,都可以由客户端代码或服务器端代码触发。当服务端使用http://nodejs.cn/api/http2.html#http2_client_side_exampleconsthttp2=require('http2');constfs=require('fs');//因为没有已知的浏览器支持[未加密HTTP/2](http://nodejs.cn/s/yfVdqh),//所以必须使用[`http2.createSecureServer()`](http://nodejs.cn/s/zQgH8T)。constserver=http2.createSecureServer({key:fs.readFileSync('key.pem'),cert:fs.readFileSync('certificate.pem')});server.on('error',(err)=>控制台.error(err));server.on('stream',(stream,headers)=>{//流是双工流。stream.respond({'content-type':'text/html;charset=utf-8',':status':200});stream.end('

你好世界

');});server.listen(8443);要为此示例生成证书和密钥,您可以运行:opensslreq-x509-newkeyrsa:2048-nodes-sha256-subj'/CN=localhost'-keyoutkey.pem-outcertificate.pemclientinstancehttp://nodejs.cn/api/http2.html#http2_client_side_exampleconsthttp2=require('http2');constfs=require('fs');constclient=http2.connect('https://localhost:8443',{ca:fs.readFileSync('cert.pem')});client.on('error',(err)=>console.error(err));constreq=client.request({':path':'/'});req.on('response',(headers,flags)=>{for(constnameinheaders){console.log(`${name}:${headers[name]}`);}});req.setEncoding('utf8');letdata='';req.on('data',(chunk)=>{data+=chunk;});req.on('end',()=>{console.log(`n${data}`);client.close();});req.end();https模块我一般在nginx中支持https,proxy_pass到http。http://nodejs.cn/api/https.html#https_https当服务端使用consthttps=require('https');constfs=require('fs');constoptions={key:fs.readFileSync('test/fixtures/keys/agent2-cert.pem'),cert:fs.readFileSync('test/fixtures/keys/agent2-cert.pem')};https.createServer(options,(req,res)=>{res.writeHead(200);res.end('Hello,worldn');}).listen(8000);或consthttps=require('https');constfs=require('fs');constoptions={pfx:fs.readFileSync('test/fixtures/test_cert.pfx'),passphrase:'password'};https.createServer(options,(req,res)=>{res.writeHead(200);res.end('Hello,worldn');}).listen(8000);当客户端使用consthttps=require('https');https.get('https://encrypted.google.com/',(res)=>{console.log('statuscode:',res.statusCode);console.log('请求头:',res.headers);res.on('数据',(d)=>{process.stdout.write(d);});}).on('错误',(e)=>{console.error(e);});WEB开发框架介绍基于Node.js的express(我经常用)。js平台,快速、开放、极简的web开发框架koa目前有1.x和2.0两个版本。Koa是一个新的Web框架,由Express背后的同一个人构建,旨在成为Web应用程序和API开发领域中更小、更具表现力和更健壮的基石。通过利用异步函数,Koa可以帮助您放弃回调并大大增强错误处理。Koa没有捆绑任何中间件,而是提供了一套优雅的方法来帮助您快速愉快地编写服务器端应用程序。eggEgg.js为企业级框架和应用而生。我们希望Egg.js能够孕育出更多的上层框架,帮助开发团队和开发者降低开发和维护成本。ThinkJS(公司内部有基于ThinkJS的后端)ThinkJS是一个面向未来开发的Node.js框架。集成了大量项目最佳实践,让企业级开发更简单高效。从3.0开始,框架底层基于Koa2.x实现,兼容Koa所有功能。基于Koa2.x,兼容中间件,内核紧凑,支持Extend、Adapter等插件方式性能优异,单元测试覆盖率高内置自动编译和自动更新机制,开发方便快捷使用更优雅的async/await处理异步问题,不再支持*/yield从3.2开始支持TypeScriptnest、sails、loopback、fastify、hapi、pomelo等URL模块处理解析URL。可以获取querystrings、protocols、hostnames、anchors等。URLSearchParams提供了对querystrings(querystring,params,searchparams)的处理,也可以使用qs库进行处理。微信公众号:前端力农参考前端培训目录,前端培训规划,前端培训计划https://zhuanlan.zhihu.com/p/87079561

最新推荐
猜你喜欢