学node写接口!!!

fs 可以读取文档

fs.readFild()  用于读取文件  第一个参数 路径 第二个参数 "utf8"(默认值) 第三个参数 函数 function(err , dataStr ){

第一个参数是错误, 第二个参数是正确的可以拿到读取文件里面的值 

}

fs.writeFile()  用于创建文件添加内容  第一个参数 创建文件的路径, 第二个参数 添加的内容 , 第三个参数 "utf8" ,第四个参数 函数 functtion( err ){

只有一个错误参数

}

__dirname 的使用

__dirname+' / 文件名'    看清楚      /  前面不添加 ./  或 ../ 

path直接就解决了这个问题 

path.join(__dirname, "./123.txt")  // 用于拼接路径 

path.basename(bPath, ".html");  // 用于获取文件的名字 第二参数可以去除后缀

path.extname(extPath); // 直接获取文件的后缀

正则表达式  取指定标签里面指定的全部内容   : /<style>[\s\S]*<\/style>/

js的一个方法  replace(" 指定的被转换的东西 " , " 转化的东西 "  )

使用http 写服务器          重点:给服务器绑定request绑定事件 监听客户端请求

// 引入 http 模块
const http = require("http");
// 创建服务器
const server = http.createServer();
// 绑定request 事件 监听 客户端请求
server.on("request", function (req, res) {
  console.log("服务器触发了");
});
// 启动服务器
server.listen(8080, function () {
  console.log("服务器启动了 172.0.0.1:8080");
});

req和res 的使用和认识

req 可以获取到请求路径 (req.url) 和  请求方式 (req.method)

res.setHeader("Content-Type", "text/html; charset=utf-8");   // 设置请求头

res.end(相应给客户端的东西)

CommonJS  导出

require('./text.js')  //获取到的是 text.js 文件 module.exports = { }  里面的数据  默认是 { }

exports.name = "sd";  // 也可以直接进行导出

第三方插件  显示时间

1. npm i moment   npm 安装

2. const moment  = require('moment')   // 使用require 进行导出后注册

3. 使用 const time = moment().format("YYYY-MM-DD HH:mm:ss"); // 

express 框架的使用

基础使用 

1. 引入express框架

2. 实例化express () 

3. 指定端口启动服务器

const express = require("express"); // 引入express 框架
const app = express(); // 实例化

app.listen(8080, () => {  // 指定端口 启动服务器
  console.log("服务器启动了 127.0.0.1:8080");
});

使用express 写 get请求和post请求 

1. 使用res.send({name:""})  // 发送到客户端

2. 使用req.query  来获取到客户端传输到服务端的数据

 3. 使用req.params 获取到 路由后面的动态参数

const express = require("express");

const app = express();
// 基础的get请求
app.get("/user", (req, res) => {
  //   console.log(res);
  res.send({ name: "zs", age: "12", sex: "🚹" }); // 相应到客户端
});
// 基础的post请求
app.post("/user", (req, res) => {
  console.log("执行成功了");
  res.send("post请求执行成功了"); //相应到客户端
});
// 在客户端传参数,使用req.query获取参数 请求方式位get请求
app.get("/userquery", (req, res) => {
  console.log("获取到客户端发送过来的查询参数:", req.query);
  res.send(req.query);
});
// 在客户端传参,使用req.query 请求方式位post
app.post("/userquery", (req, res) => {
  res.send(req.query); //获取到客户端发送过来的请求
});
// 在服务端设置动态参数,客户端传输之后 使用parmas获取到 get请求
app.get("/userparams/:id", (req, res) => {
  res.send(req.params);
});
// 在服务端设置动态传参,客户端传输之后 使用params获取到 post请求
app.post("/userparams/:ids", (req, res) => {
  res.send(req.params);
});

app.listen(8080, () => {
  console.log("服务器启动了 http://127.0.0.1:8080");
});

模块化路由  

1. 引入 express框架

2. 实例化Router express.Router() 

3.使用router.get () 请求

4.在主文件中 const router =  reuqire('./router.js')引入

5.app.use('/api',router) //挂在到app 上

路由具体写法:

// const router =
const express = require("express");

const router = express.Router();

router.get("/user/list", (req, res) => {
  res.send("get请求成功了");
});
router.post("/user/add", (req, res) => {
  res.send("post Add请求成功了");
});

module.exports = router;

对路由引入和挂载 (主文件) 

// 创建一个服务器
const express = require("express");
// 引入模块化后的路由
const router = require("./02.模块化具体的路由");
const app = express();
// 讲路由use() 到app上  同时设置 公共的请求前缀/api
app.use("/api", router);

app.listen(8080, () => {
  console.log("http://127.0.0.1:8080");
});

中间件的使用

全局中间件

1. 直接讲公共的数据和方法 app.use() 上面

//引入express 
const express = require("express");

const app = express();
// 设置一个中间件
let middleOne = (req, res, next) => {
  console.log("第一个中间件执行了");
  const timenew = Date.now();
  req.timenew = timenew;
  next();
};
let middleTwo = (req, res, next) => {
  console.log("第二个中间件执行了");
  next();
};
app.use(middleTwo, middleOne);

app.get("/", (req, res) => {
  res.send("get请求的 / 执行了" + req.timenew);
});

app.listen(8080, () => {
  console.log("http://127.0.0.1:8080");
});

局部中间件         (路由中间件和找个使用一样) 

1. 中间件的有三个参数 最后一个next 在函数中一定要最后代码写完之后一定要进行调用 next()

2. 放在app.get ('/user' , 中间件 , 中间件 , 中间件 ,function (req,res) {} )  无论多少个中间件都是放在中间进行调用

const express = require("express");

const app = express();

let middle = (req, res, next) => {
  console.log("第一个局部中间件执行了");
  next();
};
let middleTwo = (req, res, next) => {
  console.log("第一个局部中间件执行了");
  next();
};
// 第一个参数是路径 ,最后一个参数式函数执行的结果
app.get("/", middle, middleTwo, function (req, res) {
  res.send("get / 执行成功");
});
app.post("/", function (req, res) {
  res.send("post / 执行成功");
});

app.listen(8080, () => {
  console.log("http://127.0.0.1");
});

 错误中间件

1. 必须最后面来执行    用来捕获前面的错误 从而避免整个页面瘫痪

const express = require("express");

const app = express();

app.get("/", (req, res) => {
  throw new Error("错误信息");
  res.send("Hello World");
});

app.use((err, req, res, next) => {
  res.send("Error:" + err.message); // 错误中间件 拦截必须用 +
});

app.listen(8080, () => {
  console.log("http://127.0.0.1:8080");
});

内置中间件的使用

1 .app.use(express.json());    // json格式的解析

2. app.use(express.urlencoded({ extended: false }));     // 键值对的解析

3. app.use(express.static("./clock"));    // 向外托管静态资源      // express.static('文件名字')  //这里面设置的文件名字在路径上不写

第三方中间件

1. npm i body-parser // 下载安装

2. const bodyParser = require("body-parser");  // 实例化 

3. app.use(bodyParser.urlencoded({ extended: false }));  // 使用

body-parser  与 内置中间件  express.urlencoded 使用雷同   知道 那个express.urlencoded中间件是以这个body-parser第三方来封装出来的 就行了

请求模块

1.引入express 实例化后

2.在express里面拿到Router() 

3.module.exports = router 导出

4.中间写router.get('/user',(req,res)=> {

        req.query( ) //获取url 上面的数据时,

        req.params() //获取url上面的动态参数

        req.body( ) 获取客户端发送过来的请求

        res.send( ) 相应给客户端的 

})

const express = require("express");

const router = express.Router();

router.get("/user", (req, res) => {
  console.log("req.dara", req.query);
  res.send({
    status: "0",
    msg: "请求成功",
    data: req.query,
  });
});
router.post("/user", (req, res) => {
  let body = req.body;
  console.log(body);
  res.send({
    status: "0",
    msg: "post请求成功了",
    data: body,
  });
});

module.exports = router;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值