node day2
全局变量:
_dirname:当前文件所在的目录的绝对路径
_filename:当前文件所在的绝对路径
process.cwd():当前所执行代码的绝对路径
path模块
path.join() //将若干个路径片段拼接成完整路径
path.reslove()//将若干路径解析成根目录路径,如果是服务器,则是node所监听的服务器的根目录,如果本地则是盘符
http模快
nodejs 中用于 发送 请求的模块(get/post请求)
const http = require('http')
http.get(url, (res)=>{
res.setEncoding('utf8');
let rawData = ""
res.on('data', (chunk)=>{
// 数据过来一次 触发一次
rawData += chunk
})
res.on('end', ()=>{
// 数据传输完毕后触发
console.log(rawData)
})
})
cheerio
以jquery 语法 分析 字符 插件
const $ = cheerio.load(要解析的字符串);
小提示:jquery只有在设置属性有隐式遍历,获取必须each(i个数,v元素)
http.request(options[, callback])
express
基于原生node封装的框架
// 创建一个目录
npm init
npm i express -S
// 根目录下创建app.js
const express = require('express')
const app = express()
app.get(path, (req,res)=>{ // 定义一个get路由
res.send(参数)
// 参数 可以是 对象 或者字符串
})
app.post(path, (req,res)=>{ // 定义一个post路由
res.send(参数)
// 参数 可以是 对象 或者字符串
})
app.listen(9527, ()=> { console.log('start at port 9527') })
nodemon可以解决服务器代码发生改变时候及时更新
npm i nodemon -g
在package.json中脚本换成
"scripts": {
"start": "nodemon index "
},
之后再npm run 运行脚本
postman
接口测试工具
get:
params:测试地址栏的(get)query
post:
请求头:
tips:form表单元素有个属性enctype,一般默认application/x-www-form-urlencoded ,以键值形式 参考
请求方式 常见传输格式:
form-data 二进制 数据流 (上传文件)
application/x-www-form-urlencoded url编码格式 key=v&key=v 中文会转url编码
application/json json格式 传给后台 后端需要配置
body(请求体)
解析路由参数
get请求传递参数
直接req.query就可以获取请求的数据
app.get("/home", (req, res) => {
console.log(req.query);
res.send("hello 主笔");
});
post请求传的参数
无法通过req.body获取,
需要处理一下
express中间件
渐进式(框架设计思路):
框架 核心库功能不多(只包含必须的功能)
以插件、中间件形式往核心库里添加新功能
插件、中间件需要单独安装 即插即用 (最大程度节约资源)
中间件:
在请求和响应中 设置一层拦截 (在请求或者响应的添加新功能)
使用:
中间件分类
自定义:
// 中间件就是一个函数
const middleware1 = (req, res, next) =>{
// 在放行之前 可以 往 req上添加一些东西
next(); // 放行
}
// 全局中间件
app.use(middleware1) // 自动变成全局中间件
app.use('/', middleware1) // 自动变成全局中间件
// 局部中间件 只拦截 特定 path 中间件
app.use('/home', middleware1)
第三方中间件:
body-parser 中间件 解析 post 请求的参数
npm i body-parser -S
const bodyParser = require('body-parser')
// 解析 urlencoded格式的参数
app.use(bodyParser.urlencoded({extended: false}))
// 解析 json格式参数
app.use(bodyParser.json())
extended代表以哪种属性解析
restful api 规范 接口定义规范
// 后端返回数据格式 json
{
code:0, // 自定义业务逻辑编码 不是http状态码
msg:"消息", //一般用于 前端 弹出消息提醒文本
data: []/{} // 获取数据时有data
}
// 前端请求方法
获取数据 用 get
提交数据用 post
更新数据 用 put
删除数据 用delete

浙公网安备 33010602011771号