2018.7.20 写了好几遍,还是记不住,这里盲打总结一次
1. 用到的四个模块
const http = require('http'); // 创建 服务用
const fs = require('fs'); // 读写文件
const querystring = require('querystring'); // 解析post数据
const urllib = require('url'); // 解析get数据
2. 创建一个服务
const server = http.createServer( (req, res) => {
// req ---> request 前端发来请求的对象
// req.url 请求的路径
// res ----> response 后端响应的对象
// res.write(data) 向前端相应的数据
// res.end() 结束
});
server.listen(8080);
3. 解析GET数据 最大3kb
const server = http.createServer( (req, res) => {
// GET
let obj = urllib.parse(req.url, true); // true 可以数据解析为对象
let url = obj.pathname; // 请求的url路径
let GET = obj.query; // get 数据
});
server.listen(8080);
4. 解析POST数据 最大可达1GB
const server = http.createServer( (req, res) => {
// POST ---- 数据大的时候是分段传输,所以用事件监听
let str = ''; // 用一个对象存传过来的数据
// 数据传输一次执行一次
req.on('data', data => {
str += data;
});
// 数据传输完成执行一次
req.on('end', () => {
const POST = str; // 完事后,把数据存了
});
});
server.listen(8080);
5. 文件读取
const server = http.createServer( (req, res) => {
// 这把操作放在了服务中
let file_name = './www' + url; // url是上面解析的
// fs.readFlie(路径,(err, data) => { /* data就是读回来的数据 */ })
fs.readFile(file_name,(err, data) => {
if ( err ) {
console.log(‘文件读取失败’, err);
res.write('404'); // 向前端写404;说明啥都没有请求到
} else {
res.write(data);
}
res.end();
});
} );
server.listen(8080);
6. 文件写入(这一波操作其实和上面读取可以单独拿出来用的)
fs.readFile(路径, ( err, data ) => {
// data 就是读到的数据
// err 异常时候报的错
});
// data 就是要写入的数据
fs.wirteFile(路径, data , err => {
// 报的错
});
以上种种都有坑,我没填完,慢慢学,慢慢填吧 ~~~~~
7. 总结(再来默写一遍)
const http = require('http');
const fs = require('fs');
const querystring = require('querystring');
const urllib = require('url');
const server = http.createServer((req, res) => {
// get
let obj = urllib.parse(req.url, true);
let url = obj.pathname;
let getData = obj.query;
// post
let str = '';
req.on('data', (err, data) => {
if (err) {
console.error('数据异常', err);
} else {
str += data;
}
});
req.on('end',() => {
const postData = querystring.parse(str);
});
// 文件读取
let file_name = './www' + url;
fs.readFile(file_name, (err, data) => {
if (err) {
console.log('文件读取错误', err);
res.write('404');
} else {
res.write(data);
}
res.end();
})
});
server.listen(8080);
敲代码终究是一种实践的艺术,正应了时间是检验真理的唯一标准 。 ヾ(◍°∇°◍)ノ゙
网友评论