node.js根据不同的请求路径返回不同的数据

Posted 勇敢*牛牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node.js根据不同的请求路径返回不同的数据相关的知识,希望对你有一定的参考价值。

node.js根据不同的请求路径返回不同的数据

总结

node.js是什么?
javascript运行时
既不是语言,也不是框架,他是一个平台
node.js中的JavaScript没有DOM。没有BOM。
EcmaScript基本的JavaScript语言部分
在node中为JavaScript提供了服务器级别的API

  • 文件操作能力
  • http服务能力

    node.js根据不同的请求路径返回不同的数据

var http = require('http');
// 1、创建server
var server = http.createServer();
// 2、监听request请求事件,设置请求处理函数
server.on('request',function(req,res)
    // console.log("收到请求了,请求的路径是"+req.url);
    //有一种简单的写法是。直接使用end,响应的同时给结束掉
    res.end("hello world"+req.url);
)
//绑定端口号,启动服务器
server.listen(3000,function()
    console.log("服务器启动成功,可以访问了。。。。");
)

发生了一个神奇的现象

给网页反馈信息时我写了两种写法
第一种:

    if(request.url=='/')
        response.write("index");
        response.end();
        // response.end("index");
    
    if(request.url=='/login')
        response.write("log in qq");
        response.end();
        // response.end("log in qq");
    else
        response.write("404 NOT FOUND");
        response.end();
        // response.end("404 NOT FOUND");
    

经过我艰苦排查,逐行比对。发现if_1和if_2两个并列且不给任何一个if添加else,虽然交互太生硬但不报错,顶多访问错误路径会一直去请求。

但是给任何一个添加了else,访问对的路径是没问题,但是随便访问个错的路径,他就会失去整个访问权限。 虽然不知道为什么,但是我排错后又有一种写法。这就是所谓的代码经验吧。
也是吃了没经验的亏,报的错是:Error [ERR_STREAM_WRITE_AFTER_END]: write after end错误[ERR_STREAM_WRITE_AFTER_END]:结束后写入,表示不是太理解。

第二种写法

var http = require('http');
// 1、创建server
var server = http.createServer();
// 2、监听request请求事件,设置请求处理函数
server.on('request',function(req,res)
    // console.log("收到请求了,请求的路径是"+req.url);
    //有一种简单的写法是。直接使用end,响应的同时给结束掉
    // res.end("hello world"+req.url);
    if(req.url==='/')//全等符
        res.end("index page");
    else if(req.url==='/login')
        res.end("login page");
    else
        res.end("404 NOT Found");
    
)
//3、绑定端口号,启动服务器
server.listen(3000,function()
    console.log("服务器启动成功,可以访问了。。。。");
)

整个请求if串在一起,逻辑上和第一种是一样(稍稍的差别)的呀

这样就符合我的预期,错误路径返回信息,但是任然可以访问。。。
访问的类型必须是字符串,数字都不行

代码描述:

var http = require('http');
const  json  = require('stream/consumers');
// 1、创建server
var server = http.createServer();
// 2、监听request请求事件,设置请求处理函数
server.on('request',function(req,res)
    //假如有一个数组,从网页端请求出去
    if(req.url==='/products')
        var products = [
            name:"苹果 x",
             price:8888
            ,
            name:"香蕉 x",
             price:6666
            ,
            name:"菠萝 x",
             price:1999
            
        ]
        res.end(JSON.stringify(products));
    
)
//3、绑定端口号,启动服务器
server.listen(3000,function()
    console.log("服务器启动成功,可以访问了。。。。");
)

以上是关于node.js根据不同的请求路径返回不同的数据的主要内容,如果未能解决你的问题,请参考以下文章

同 一个页面,不同请求路径,如何根据实际场景写JS

Node.js完整的响应html页面(包括css,js文件)

Node.js服务器开发(上)

Web框架本质

我可以根据每个请求更改数据库吗(Sails.js)

如何等待module.export函数完成请求,然后再将其返回值分配给不同JS文件中的变量[重复]