Nodejs服务器跨文件夹获取数据

 服务器跨过public文件夹获取内部数据

Nodejs服务器跨文件夹获取数据

 此时请求主页面时需要写文件夹名. 如下图所示:

Nodejs服务器跨文件夹获取数据

以上操作较为繁琐,为求简单便捷希望直接输入文件名甚至不输入文件名

Nodejs服务器跨文件夹获取数据

Nodejs服务器跨文件夹获取数据


基础操作如下:

node创建服务器的基本步骤:

第一步:

http为node核心模块,不用下载,直接引用即可。

// 引入http
const http = require('http')

第二步:

使用http的createServer方法,方法内只有一个回调函数

req为请求,res为响应

// http创建一个服务器           req为请求,res为响应
const server = http.createServer((req, res) => {
    // 返回ok查看
    res.end('ok')
})

第三步:

设置监听,注意端口号不要冲突。

// 监听8080端口
server.listen(8080, () => {
    // 连接成功log提示
    console.log('8080端口监听中....');
})

现阶段代码如下:

Nodejs服务器跨文件夹获取数据

 

此时就可以访问测试:

Nodejs服务器跨文件夹获取数据

 以上简单的node服务器就搭好了,但仍需优化。


node服务器访问页面:

引入fs与path核心模块

// 引入fs
const fs = require('fs')
// 引入path
const path = require('path')

使用fs读取文件,如果读取不到响应无法访问

否则返回data(自动为buffer格式)

const server = http.createServer((req, res) => {
        fs.readFile(path.join(__dirname, req.url), (err, data) => {
            // 判断:如果有错误,说明文件不存在,否则返回data(自动为buffer格式)
            if (err) {
                // 设置响应码
                res.statusCode = 404
                    // 设置响应头              因为下面的响应内容为中文,设置utf8
                res.setHeader('content-type', 'text/css;charset=utf8')
                res.end('无法访问')
            }
            // 将数据返回
            res.end(data)
        })
})

此时可以做到访问index.html

Nodejs服务器跨文件夹获取数据


Nodejs服务器跨文件夹获取数据:

如果端口后面没有内容,req.url返回的是  / 

所以第二行如果req.url等于 / 就返回index.html

使用path方法拼接访问路径

const server = http.createServer((req, res) => {
        let url = req.url == '/' ? 'index.html' : req.url
            // 使用path.join方法拼接地址复制给filePath filePath
        const filePath = path.join(__dirname, 'public', url)
            // 使用fs方法读取文件。
        fs.readFile(filePath, (err, data) => {
            // 判断:如果有错误,说明文件不存在,否则返回data(自动为buffer格式)
            if (err) {
                // 设置响应码
                res.statusCode = 404
                    // 设置响应头              因为下面的响应内容为中文,设置utf8
                res.setHeader('content-type', 'text/css;charset=utf8')
                res.end('无法访问')
            }
            // 将数据返回
            res.end(data)
        })
})

最终段代码如下:

// 引入http
const http = require('http')
    // 引入path
const path = require('path')
    // 引入fs
const fs = require('fs')

// http创建一个服务器           req为请求,res为响应
const server = http.createServer((req, res) => {
        let url = req.url == '/' ? 'index.html' : req.url
            // 使用path.join方法拼接地址复制给filePath filePath
        const filePath = path.join(__dirname, 'public', url)
            // 使用fs方法读取文件。
        fs.readFile(filePath, (err, data) => {
            // 判断:如果有错误,说明文件不存在,否则返回data(自动为buffer格式)
            if (err) {
                // 设置响应码
                res.statusCode = 404
                    // 设置响应头              因为下面的响应内容为中文,设置utf8
                res.setHeader('content-type', 'text/css;charset=utf8')
                res.end('无法访问')
            }
            // 将数据返回
            res.end(data)
        })
    })
    // 监听8080端口
server.listen(8080, () => {
    // 连接成功log提示
    console.log('8080端口监听中....');
})

上一篇:每日一练_30(2021.7.14)无重复最长子串长度:


下一篇:使用plus.io创建文件并写入内容