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

Node.js教程之七——Express基础应用

时间:2023-04-03 23:45:59 Node.js

ExpressExpress是一个第三方模块,为原生模块封装了一个更加灵活简洁的应用框架。它在Node.js环境中的地位和作用就像jQuery在前端的地位和作用。路由在BS架构中,路由的概念是一样的,可以理解为根据客户端请求的URL映射到不同的方法,更一般的是针对URL中的路径,或者参数,或者锚点击这些要映射的信息。使用Express是因为Express是第三方模块,所以在使用它加载模块之前必须安装npminstallexpressvarexpress=require('express');varapp=express();打开服务器,定义8080端口:app.listen(8080,function(){console.log('Serverrunningonhttp://localhost:8080');});Express--GET定义根路由,我们定义端口为8080,当我们访问:http://localhost:8080/时,会自动触发该方法,页面上会显示RootPage。response.send()可以理解为response.end(),区别之一是response.send()参数可以是对象。只有GET访问才能触发app.get('/',function(request,response){response.send('RootPage');})定义了getUsers路由,当我们访问:http://localhost:8080/getusers,方法自动触发,页面显示getUsersPage。app.get('/getUsers',function(request,response){response.send('getUsersPage');})默认情况下,Node.js无法访问静态资源文件(.html、.js、.css、.jpg等),如果要访问服务器上的静态资源文件,需要使用方法sendFile__dirname作为Node.js系统变量,指向文件的绝对路径。app.get('/index.html',function(req,res){res.sendFile(__dirname+"/"+"index.html");});Express--GET参数接收的QueryStrings访问地址:http://localhost:8080/getusers?username=dk&age=18,参数可以通过request.queryapp.get('/getUsers',function(request,response){varparams={username:request.query.username,age:request.query.age}response.send(params);})Express--GET参数接收路径访问地址:http://localhost:8080/getusers/admin/18,可通过request.params获取参数app.get('/getUsers/:username/:age',function(request,response){varparams={username:request.params.username,age:request.params.age}response.send(params);})Express--POSTpost参数接收,依赖第三方模块body-parser进行转换更方便简单。该模块用于处理JSON、Raw、Text和URL编码数据。安装body-parsernpminstallbody-parser参数接受和GET基本一样,区别是GET是request.query,POST是request.bodyvarbodyParser=require('body-parser');//创建application/x-www-form-urlencoded编码解析varurlencodedParser=bodyParser.urlencoded({extended:false})app.post('/getUsers',urlencodedParser,function(request,response){varparams={username:request.body.username,age:request.body.age}response.send(params);});Express--跨域支持(在前面)app.all('*',function(req,res,next){res.header("Access-Control-Allow-Origin","*");res.header("Access-Control-Allow-Headers","Content-Type,Content-Length,Authorization,Accept,X-Requested-With");res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");res.header("X-Powered-By",'3.2.1')??if(req.method=="OPTIONS"){res.send(200);/*让选项请求快速返回*/}else{next();}});