nodejs开始揭开后端语言神秘面纱
const http = require('http') const fs = require('fs') const server = http.createServer((request, response) => { // console.log(getPrototypeChain(request)) // console.log('this is a request'); // console.log(getPrototypeChain(response)) // response.end('Hello 666') // 通过以上打印信息可以了解到request和response都是Stream流 const {url, method, headers} = request if (url === '/' && method === 'GET') { // html模板请求 fs.readFile('index.html', (err, data) => { if (err) { response.writeHead(500, { 'Content-Type': 'text/plain;charset=utf-8' }) response.end('500服务器繁忙') return } response.statusCode = 200 response.setHeader('Content-Type', 'text/html') response.end(data) }) } else if(url === '/users' && method === 'GET') { // json数据接口请求 response.writeHead(200, { 'Content-Type': 'application/json' }) response.end(JSON.stringify([{name: 'tom'}])) } else if(method === 'GET' && headers.accept.indexOf('image/*') != -1) { // 图片请求 // fs.createReadStream创建导管的一端,response作为导管的另外一端,pipe将导管两端连接起来。 fs.createReadStream('.' + url).pipe(response) } else { // 404请求 response.statusCode = 404 response.setHeader('Content-Type', 'text/plain;charset=utf-8') response.end('404页面不存在') } }) function getPrototypeChain(obj) { const protoChain = [] while(obj = Object.getPrototypeOf(obj)) { protoChain.push(obj) } return protoChain; } server.listen(3000, () => { console.log('Server is start at 3000'); })
评论区