【Express.js】响应

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

响应

上一节讲完了请求这一节我们就来讲一下响应吧
本节作为初级内容将罗列比较常用的响应方法以及其简单的使用形态

准备工作

拷贝第一节Hello World项目

status

res.statue(status code)这是很实用的一个方法设置响应体的Http状态码虽然REST-Apid的风格的是统一200但在express.js中有些情景下你必须设置status code为某个值

res.status(404);

send

res.send(content)将任意类型的内容放在响应体内返回给请求源

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

也可以接在status后面:

res.status(200).send(<p>hello world</p>);

end

res.end()用于快速结束不需要返回数据的场景下的响应不过end()也可以传送数据但性能消耗较大不建议用res.end传数据和信息

//END
app.get('/end',(req,res)=>{
    res.status(404).end();
})

json

res.json(content)以json格式的请求体返回给请求源可能会收到跨域保护的限制因此往往需要我们顶上设置的一串Allow

//json - 同源限制
app.get('/json',(req,res)=>{
    let resp = {
        code: 200,
        msg: "json",
        toPrint: function(){
            console.log(`resp[code: ${this.code}, msg: ${this.msg}]`);
        }
    }
    res.jsonp(resp);
})

jsonp

res.jsonp(content)jsonp是开发者们自研的一种不正统的数据格式和json基本一样但不太会被跨域保护给拦着

//jsonp - 更容易的解决跨域
app.get('/jsonp',(req,res)=>{
    let resp = {
        code: 200,
        msg: "jsonp",
        toPrint: function(){
            console.log(`resp[code: ${this.code}, msg: ${this.msg}]`);
        }
    }
    res.jsonp(resp);
})

sendFile

res.sendFile(path,options)静态传输文件不能直接使用相对路径

//sendfile传输文件
app.get('/sendfile',(req,res)=>{
    //只能是静态路径需要相对路径的话有很多方法以下是其中一个
    res.sendFile("hello.txt", {root: __dirname});
})

download

res.download(path)下载传输文件这个可以直接使用相对路径

//download下载文件
app.get('/download',(req,res)=>{
    //可以直接相对路径
    res.download("./hello.txt");
})

sendStatus

res.sendStatus(status code)设置响应码并返回信息为该状态码预设好的文本比如res.sendStatus(404)则响应的状态码是s404返回的信息是’not Found’

//sendstatus
app.get('/sendstatus',(req,res)=>{
    //预先写好的httpStatus组合改一下试试如果你输入的status码不存在msg将变成这个码的数字
    res.sendStatus(404);
})

location

res.location(route)REST接口之间的转发必须设置status为300~309之间的数字才能成功转发

//location
app.get('/location/1',(req,res)=>{
    //转发到最早的helloworld路由去
    res.location('/').status(302).send();
})

//location/2
app.get('/location/2',(req,res)=>{
    //转达到下面定义的这个接口
    res.location('/location/index').status(302).send();
})

app.get('/location/index',(req,res)=>{
    res.send("welcome to learn express.js by demos");
})

redirect

res.redirect()路由重定向这个比较特殊我们放到路由控制那一节再讲

下一节-Sql-knex增删改查

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6