[路飞]_node.01

70 阅读2分钟

了解node——day 1

  • http状态码相关
  • 创建node本地服务

状态码

http状态码有5大分类:

1** (表示信息响应;数值范围:100-199)

2** (表示成功响应;数值范围:200-299)

3** (表示重定向;数值范围:300-399)

4** (表示客户端错误;数值范围:400-499)

5** (表示服务器错误;数值范围:500-599)

具体什么场景用到什么码可到此处查询:www.runoob.com/http/http-s…

创建node本地服务

  1. 安装node,nodemon(方便开发的工具:自动检测到目录中的文件更改时通过重新启动应用程序来调试基于)
  2. 创建js文件;
  3. 引入http模块: require('http')
  4. 引入的http模块中,有一个createServer方法,创建一个服务器,语法如下:传入callback回调函数,requset参数是接受请求对象,response是响应对象
const http = require('http);
http.createServer((request, response) => {});
  1. 将创建好的服务进行端口监听,第一个参数说端口号,第二个参赛是服务启动后可以作的行为
http.createServer(()=>).listen(3000,()=>{//to do someing})
  1. 一个本地服务就这样搭建好了
const http = require('http');
const fs = require('fs');
http.createServer((req, res) => {
    const { url, method, headers } = req;

    if( url === '/' && method  === 'GET' ){
        fs.readFile('./index.html', (err, data) => {
            console.log(err,'err')
            if(err) {
                res.writeHead(500, {'Content-Type': 'text/plain;charset=utf-8'});
                res.end('500 服务器错误');
                return;
            }
            res.statusCode = 200;
            res.setHeader('Content-Type', 'text/html');
            res.end(data);
        });
    } else if (url === '/users' && method === 'GET') {
        res.writeHead(200, {'Content-Type': 'application/json'});
        res.end(JSON.stringify({name:'xxx', age:89}));
    } else if (headers.accept.indexOf('image/*') && method === 'GET') {
        fs.createReadStream('.' + url).pipe(res)
    } else {
        res.statusCode = 404;
        res.setHeader('Content-Type','text/plain;charset=utf-8');
        res.end('404')
    }
}).listen(3000, ()=>{
    console.log('server 3000')
})

在实现通过访url 读取本地图片文件这个过程中,发现了之前没有注意到的细节,就是在node启动的时候如果你的终端是在该js文件路上上打开的, 当你在操作file的动作上会报错,这里是路径错了,应该在改文件上的文件夹进行终端操作

还有对createReadSteam 这个流的操作,在大文件读取复制的时候有很大的优点,这个方法相当于是将一个瓶子的水接一根管子到另一个空瓶子去,这个管子就是pipe,这样就是能将水互通,且不占用额外的内存