Node 使用express框架

安装express框架

  新建一个空的文件夹,作为项目的根目录,进入该文件夹之后,执行npm install express 

use、get、post

const express = require("express");
var server = express();
server.get("/a.html",function(request,response){
	console.log("只能使用get方式请求a.html");
});

server.post("/b.html",function(request,response){
	console.log("只能使用post方式请求b.html");
});

server.use("/c.html",function(request,response)){
	console.log("可以使用get或者post方式请求c.html")
}
server.listen(8081);

  express().get()表示接受get请求,express().post()表示接受post请求。此时不能使用get方式请求一个绑定了post方法的路由,同理,也不能使用post方法请求一个绑定了get方法的路由,即绑定什么方法,就用什么方式请求才行,除非有use。

  express().use()表示即可接受get请求,又可接受post请求。

 

返回给客户端数据

const express = require("express");
var server = express();
server.use("/a.html",function(request,response){
	response.send("aaaaaaa");
});
server.use("/b.html",function(request,response){
	response.send("bbbbbbbb");
});
server.listen(8080);

  注意上面的response、request这两个对象,并不是http的那个request和response。而是在http的request和response的基础上增加了一些使用比较方便的接口,而且以前的方法仍旧能用。

  比如之前的write()只能写字符串,现在send()不但可以写字符串,还可以写json格式的对象。同时write()仍旧能用

 

安装express-static

  执行npm install express-static。即可完成安装

问什么使用express-static

  虽然我们可以像上面的那样,为每一个文件都绑定一个get、post或者use,但是这个是不现实的。毕竟普通项目的文件成千上万,岂不是要累死?

  当然也可以为一些特定的文件绑定get、post或者use,其他的文件使用if else 或者switch case来判断,比如是否绑定了路由,是否需要后端处理,还是直接返回文件内容?如果是直接返回文件内容的话,可以使用fs模块,将内容读出来之后,返回给客户端。

  上面的多少都有点麻烦,使用express-static模块配合express框架,真的很方便

const express = require("express");
const expressStatic = require("express-static");

var server = express();
server.use("/a.html",function(request,response){
	response.send("aaaaaaa");
});
server.use("/b.html",function(request,response){
	response.send("bbbbbbbb");
});

server.listen(8080);

server.use(expressStatic("./www"));

  除了对a.html和b.html的请求会被拦截下来,需要进行处理之后返回客户端响应。客户端对其他文件,比如对c.html的文件请求,服务器会直接返回/www/c.html文件,不用再使用fs来实现。很方便吧!

 

express框架下的request和response有很多属性和方法,具体参考如下:

request   : 以访问http://localhost:8080/a.html?name=abc&age=50为例

req.baseUrl:获取路由当前安装的URL路径
->/a.html?name=abc&age=30

req.hostname / req.ip:获取主机名和IP地址
->localhost

req.originalUrl:获取原始请求URL
->/a.html?name=abc&age=30

req.params:获取路由的parameters
->{}

req.path:获取请求路径
->/

req.protocol:获取协议类型
->http

req.query:获取URL的查询参数串 
->{ name: 'abc', age: '30' }

req.route:获取当前匹配的路由
->undefined

  

response

res.app:同req.app一样
res.append():追加指定HTTP头
res.set()在res.append()后将重置之前设置的头
res.cookie(name,value [,option]):设置Cookie
opition: domain / expires / httpOnly / maxAge / path / secure / signed
res.clearCookie():清除Cookie
res.download():传送指定路径的文件
res.get():返回指定的HTTP头
res.json():传送JSON响应
res.jsonp():传送JSONP响应
res.location():只设置响应的Location HTTP头,不设置状态码或者close response
res.redirect():设置响应的Location HTTP头,并且设置状态码302
res.render(view,[locals],callback):渲染一个view,同时向callback传递渲染后的字符串,如果在渲染过程中有错误发生next(err)将会被自动调用。callback将会被传入一个可能发生的错误以及渲染后的页面,这样就不会自动输出了。
res.send():传送HTTP响应
res.sendFile(path [,options] [,fn]):传送指定路径的文件 -会自动根据文件extension设定Content-Type
res.set():设置HTTP头,传入object可以一次设置多个头
res.status():设置HTTP状态码
res.type():设置Content-Type的MIME类型

  

posted @ 2018-06-01 14:59  寻觅beyond  阅读(239)  评论(0编辑  收藏  举报
返回顶部