nodejs express框架基本使用

express是什么?

基于NodeJS的框架
重点: 路由和中间件

如何使用express?

不是nodejs内置,若想使用,需要安装express框架
注意:
1)安装express之前,需要对工程进行初始化
npm init
该命令会在工程中产生一个package.json的文件(项目的清单文件),文件常见内容说明:
main: 入口文件
script:项目中配置的脚本命令 npm run 命令名称
2)安装express
npm install express --save 或者
cnpm install express --save
3)使用express

const express= require('express');//引入框架
const app= express();//执行框架函数,express实例

//路由分发机制
//路由匹配
//指定路由      接收get请求
//在原生代码中需要createServer方法创建服务器,express中不需要使用该方法创建服务器
//get方法可以接收get请求
//接收get请求的 根路径请求
//当接收到客户端请求时,就触发服务器,判断是post或者是get请求,判断完毕之后,进入对应的路由匹配
app.get('/',(req,res)=>{
    // res.end('hello');//node原生方法
    // res.send('hello');//发送  将数据发送给客户端,结束请求
    res.send('成功');
    // res.send({code:200,msg:"成功,hello"});
});

app.get('/login',(req,res)=>{
    res.end('登录');
})

//post方法可以接收post请求
app.post('/',(req,res)=>{
    res.end('post');
});

//启动服务器,监听指定端口
app.listen(3000);

3.express中常见的路由配置
路由由请求方法和路径共同组成。只有请求方法和路径都匹配,才会执行路由对应的回调函数

Express中可以配置路由的方法:

get(path,callback)			get请求
post(path,callback)			post请求
all(path,callback)			接收所有的请求
route(path).get(callback).post(ballback)		中转作用

4.请求参数

1)传统方案传递参数:
http://localhsot:3000?username=jack&pwd=124
get请求,请求参数可以通过request对象的query属性来获取
app.get('/',(req,res)=>{
    console.log(req.query);//get请求参数
    res.send('get');
});

post请求的参数,不可以使用query对象来获取,
可以监听data和end事件来读取数据
2)通过参数路径的配置来传递参数

// login?username=admin&pwd=123
// login/admin/123
app.get('/login/:username?/:pwd?',(req,res)=>{
    console.log(req.params);
    res.send('login');
});

注意:通过路径参数传递,也要满足路径匹配原则,例如:上例中,username和pwd参数可以传递也可以不传递(因为使用正则的?来修饰,若没有修饰,则两个参数都必须传递,否则不能匹配)

总结:两种参数传递方案对比
1)路径参数相比于查询字符更具有隐蔽性
2)路径参数配合正则表达式可以实现更加强大的功能
3)查询字符的穿地方方案不能控制用户是否传递了参数,若有些参数是必传的内容,则使用路径参数更加合理。

5.请求路径
在express中,请求路径支持正则匹配原则

+
*
/*
    正则字符:
        ?   零次或一次
        *   任意字符
        +   一次或多次
*/

//  /a  或者 /ab
// app.get('/ab?',(req,res)=>{
//     res.send('ab路由');
// });

//  a(bc)?   --> bc可以出现0次或者一次
//  a(bc)+   --->bc可以出现一次或者多次
app.get('/a(bc)+',(req,res)=>{
    res.send('ab路由');
});

6.设置请求头信息
可以使用原生的NodeJS中的方法
setHeader() writeHead()
也可以使用express带的方法:
set()
header()

   //原生node
    res.setHeader("Access-Control-Allow-Origin",'*');
    res.setHeader('content-type',"text/plain;charset=utf8");
    // res.writeHead(200,{
    //     "Access-Control-Allow-Origin":'*'
    // });

    //express  
    // res.set("Access-Control-Allow-Origin",'*');
    // res.header("Access-Control-Allow-Origin",'*');
    // res.header({
    //     "Access-Control-Allow-Origin":'*'
    // });

注意:若使用writeHead()搭配send()方法使用时,需要注意,writeHead方法只能执行一次,send默认会设置头信息,有可能报错
7.response对象的响应方法:
send end render

中间件的使用:

中间件(middleware)就是一个方法,但是一般情况下,中间件方法需要携带next参数

使用中间件:
app.use(path,callback);
use方法的使用类似all方法,都是能够接收任何请求,例如:get、post、put/delete…
二者的路径匹配规则不一致:
all()的路径匹配是一个精准匹配(必须相等才可以)
use()定义的路径,是一个一级路由,意味着,在后面追加任意路由均可匹配
例如:
/ 匹配:/, /apple ,/index …一切都可以匹配
/index 只能匹配:以/index为一级路由的路由,例如:/index, /index/admin,…

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值