Nodejs之Express框架常用API小解

点点圈 提交于 2019-12-03 13:31:28

Express作为Nodejs最常用的轻量级框架,版本更新很快,2.x -> 3.x过程中也有很多改动,这里对常用的,基础的API进行一次汇总,初学者可以学习,作者本人权当复习之用.

创建一个express应用,其中express()方法返回的app实际上是一个Function对象,它被设计为传给node的http server作为处理请求的回掉函数.

var express = require('express');
var app = express();    //这里3.x版本与2.x有明显区别

app.get('/',function(req,res){
  res.send("Hello world!");
});

app.listen(3000); 

1. app的set()和get()通常用来存储一些服务器设置:

app.set('name','张三');
app.get('name');  //张三

2. app.configure([env],callback);这个函数在2.x版本中还能看到,但是到了3.x官方已经不推荐使用,它的主要作用是当env和app.get('env')匹配时,也就是preocess.env.NODE_ENV,则执行callback方法..官方文档推荐大家使用if判断的方式,看代码可知:

app.configure(function(){
  app.set('name','xiaoshi');
});

//上面代码等价于下面代码

app.set('name','xiaoshi');

//---------------------------------

app.configure('development',function(){
  app.set('name','xiaoshi');
});

//上面代码等价于下面代码

if('development' == app.get('env')){
  app.set('name','xiaoshi');
}

3. app.use([paht],function); app.use不是用来处理请求,而是加载处理请求的模块的参数.通常是处理中间件,可选参数的默认值是'/'.

app.use(function(req,res,next){
  res.send("hello world");
});

path路径对于function不可见,这意味着req.path是找不到值的,这么设计为了让中间件可以不需要修改代码就在任意前缀路径下执行.常见定义静态文件服务的就是如此.app.use()定义的中间件顺序会被严格执行.


4. app.render(view,[option],callback);渲染view,callback中处理返回的渲染后的字符串.如下:

app.render('email',function(err,html){
  //...
});

5. req.params 这是一个存放键值对形式的数组对象.比如路由/user/:name,"name"属性会在req.params.nam中,你可以通过这种方式获取值.

6. req.query 这是一个经过解析的url请求参数的对象.

7.req.body 这个是我们比较常见的,由bodyParser()提供的解析过的请求体,默认是{}.看一下例子:

//POST请求,user[name]=xiaoshi
req.body.user.name
// => "xiaoshi"

//POST {"name":"xiaoshi"}
req.body.name
// => "xiaoshi"

8. req.param(name);也是一个查询参数值的方法,对比之前类似的方式,它们优先级如下:

req.params > req.body > req.query

9. req.path 返回请求的URL路径名(不包括参数); req.host 返回主机名(不包括端口号)

10. res.redirect([status],url); 使用可选状态码,跳转url

res.redirect('http://example.com');

11. res.send([body|status],[body]); 发送一个响应,该方法作为主要的响应函数,它会自动设置Content-Length,同事设置Content-Type,除非之前已经设置过

res.set('Content-Type', 'text/html');

这里仅列出最常见,最常用的,更多的还是在官方API文档上.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!