当前位置:网站首页>Nodejs服务端
Nodejs服务端
2022-08-09 10:03:00 【高桥靓仔】
Nodejs服务端
一、http模块
//引入http模块
const http = require('http');
//创建http服务
http.createServer((request, response) => {
console.log(request.url)//获取url
//设置响应头
response.writeHead(200, {
'Content-Type': 'text/plain;charset="utf-8"' })
//结束响应并返回给客户端
response.end('Hello 哈哈哈')
}).listen(8039, () => console.log('Server running at http://localhost:8039/'))
//监听端口为8039
二、url模块
var url = require('url')
//默认第二个参数为false(query属性不转换成json)
console.log(url.parse('http://user:[email protected]:8080/p/a/t/h?skip=0&limit=10#hash'))
Url {
protocol: 'http:',//传输协议
slashes: true,//slashes指的是 如果 protocol 协议冒号后面跟着两个 ASCII 斜杠字符(/)
auth: 'user:pass',//作者
host: 'sub.host.com:8080',//host 比 hostname多端口
port: '8080',//端口号
hostname: 'sub.host.com',
hash: '#hash',//hash锚点
search: '?skip=0&limit=10',//search比query多?
query: 'skip=0&limit=10',//当第二个参数为true时,query属性值为一个参数对象
pathname: '/p/a/t/h',//path比pathname多后面参数
path: '/p/a/t/h?skip=0&limit=10',
href: 'http://user:[email protected]:8080/p/a/t/h?skip=0&limit=10#hash',//href是完整路径
}
//第二个参数为true(query属性转换成json)
console.log(url.parse('http://user:[email protected]:8080/p/a/t/h?skip=0&limit=10#hash',true))
Url {
protocol: 'http:',
slashes: true,
auth: 'user:pass',
host: 'sub.host.com:8080',
port: '8080',
hostname: 'sub.host.com',
hash: '#hash',
search: '?skip=0&limit=10',
query: [Object: null prototype] {
skip: '0', limit: '10' },
pathname: '/p/a/t/h',
path: '/p/a/t/h?skip=0&limit=10',
href: 'http://user:[email protected]:8080/p/a/t/h?skip=0&limit=10#hash'
}
三、fs模块
1】fs.stat
检测是文件还是目录
var fs = require('fs')
fs.stat('./html',(err,data)=>{
if(err){
console.log(err);
return;
}
console.log(`是文件:${
data.isFile()}`)
console.log(`是目录:${
data.isDirectory()}`)
})
2】fs.mkdir
创建目录
fs.mkdir(path,[mode],[callback])
- Path:将创建的目录路径
- Mode:目录权限(读写权限),默认777
- Callback:回调,传递异常参数err
var fs = require('fs')
fs.mkdir('./css',err=>{
if(err){
console.log(err);
return;
}
console.log('创建成功')
})
3】fs.writeFile
创建文件并写入内容(或替换文件并写入内容)
fs.writeFile(filename,data,[option],[callback]
- Filename:(String)文件名称
- Data:(String|Buffer)将要写入的内容
- Option:(Object)option数组对象包含:
- Encoding:(String)默认
utf8
,当data使buffer时,该值应该为ignored
。 - Mode:(Number)文件读写权限,默认值为
438
- Flag:(String)默认值为
'w'
- Encoding:(String)默认
var fs = require('fs')
fs.writeFile('./index.txt','你好',err=>{
if(err){
console.log(err);
return;
}
console.log('创建并写入文件成功')
})
4】fs.appendFile
文件追加内容
var fs = require('fs')
fs.appendFile('./index.txt','你好',err=>{
if(err){
console.log(err);
return;
}
console.log('文件追加内容成功')
})
5】fs.readFile
读取文件内容
var fs = require('fs')
fs.readFile('./index.txt',(err,data:Buffer)=>{
if(err){
console.log(err);
return;
}
console.log('读取的内容是:',data)//默认是读取到十六进制的buffer类型
console.log(data.toString())//Buffer转成String类型
})
6】fs.readdir
读取目录(将所以的文件名或目录名存在数组中)
var fs = require('fs')
fs.readdir('./',(err,data:Array)=>{
if(err){
console.log(err);
return;
}
console.log(data)//['fliename1.html','js','filename2.css']
})
7】fs.rename
1.重命名文件或目录 2.移动文件或目录
var fs = require('fs')
fs.rename('./css/aaa.css','./css/index.css',err=>{
if(err){
console.log(err);
return;
}
console.log('文件重命名成功')
})
fs.rename('./css/aaa.css','./html/index.css',err=>{
if(err){
console.log(err);
return;
}
console.log('文件移动成功')
})
8】fs.rmdir
删除目录
var fs = require('fs')
fs.rmdir('./css',err=>{
if(err){
console.log(err);
return;
}
console.log('删除目录成功')
})
9】fs.unlink
var fs = require('fs')
fs.unlink('./css/aaa.css',err=>{
if(err){
console.log(err);
return;
}
console.log('删除文件成功')
})
四、路由
针对不同的请求的URL,处理不同的业务逻辑。
原生nodejs模块化封装接口和静态服务:
使用中间件 router[name](req, res)
的方式调用
//router.js路由配置文件
const url = require('url')
const fs = require('fs')
const app = {
//静态服务
static: (req, res, static_path) => {
const path = url.parse(req.url).pathname
path_name = path === '/' ? '/index.html' : path
if (path_name !== '/favicon.ico') {
try {
//可设置服务器的静态文件目录
const data = fs.readFileSync('./' + static_path + path_name)
if (data) {
res.end(data)
}
} catch (error) {
console.error(error)
}
}
},
login: (req, res) => {
//登录接口
res.end('login')
},
new: (req, res) => {
//新建接口
res.end('new')
},
notFound: (req, res) => {
//404接口
res.end('API 404 ERROR !!!')
}
}
module.exports = app
服务入口文件:
//index.js文件
const http = require('http');
const url = require('url')
const router = require('./router')
http.createServer((req, res) => {
router.static(req, res, 'static');
const path_name = url.parse(req.url).pathname.replace('/', '')
try {
router[path_name](req, res)
} catch (error) {
router['notFound'](req, res)
}
}).listen(8039,
() => console.log('Server running at http://localhost:8039/'))
边栏推荐
猜你喜欢
随机推荐
图表示学习(Graph Representation Learning)笔记
Browser error classification
LeetCode75:颜色分类-C语言一次遍历求解
【Linux】宝塔面板设置MySQL慢查询日志,未走索引日志
诡秘番外:在现代
[ASM] Bytecode operation MethodVisitor case combat generation object
通过程序发送 Gmail 邮件
安装torch_sparse失败解决方法
Thread,Runnable,ExecutorService线程池控制下线程量
[贴装专题] 贴装流程中涉及到的位置关系计算
Redis cache update strategy actively
goproxy.io 证书过期
Practical skills: a key for image information in the Harbor, quick query image
程序环境和预处理
By asking where the variables are stored, the shepherd boy laughed and said to use pointers, Go lang1.18 introductory refining tutorial, from Bai Ding to Hongru, the use of go lang type pointers (Poin
浅析JWT安全问题
Celebrate ranked 18
技术分享 | 如何模拟真实使用场景?mock 技术来帮你
排序1:冒泡排序
JDBC中的增删改查操作