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