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
posted @ 2020-12-02 11:19  hw558  阅读(123)  评论(0)    收藏  举报