node总结与axios使用

node

学习了node自己写接口自给自足

node介绍
node是一个JS运行环境 JS代码写好之后需要放到浏览器里面去运行,脱离了浏览器是没有办法运行的,现在不仅浏览器能运行JS,Node也能运行Js。
● 正常情况下io操作是堵塞的 用node处理高并发很好
● 网络请求 数据库处理 文件读写
● 防止甩锅 能书写api(接口文档)
● 限制语言环境的不是语言本身 而是语言的运行环境
node书写邮件接口

// 严格模式
'use strict';
const nodemailer = require('nodemailer');
// 创建发送邮件的对象
let transporter = nodemailer.createTransport({
    host: 'smtp.qq.com',/*
    发送方用的是哪一个邮箱比如qq,可以在node_modules/nodemailer/lib/well-known/services.json里边找 */
    port: 465,//端口号
    secure: true, // 端口号是465时写true,否则写false
    auth: {
        user: '1666666666@qq.com', // 发送方的邮箱地址
        pass: '6666'  // mtp的验证码 需要自己去自己邮箱里找
    }
});
function send(mail, code) {
    // 邮件信息
    let mailobj = {
        from: '"Fred Foo ?" <16666666666@qq.com>', // 发送地址
        to: mail, // 发送给谁(发送一个或多个,多个用逗号隔开)
        subject: '夜星', // 标题
        text: `您的验证码是:${code},有效期是5分钟`// 发送的文本信息(只能输文本),文本信息和网页信息只能有一个
        // html: '<b>Hello world?</b>' // 发送的html页面
    }
    return new Promise((reslove,reject)=>{
        // 发送邮件
        transporter.sendMail(mailobj, (err, data) => {
            if (err) {
                console.log(err);
                console.log('发送失败')
                reject()
            } else {
                reslove()
                console.log("发送成功");
            }
        })
    })
}

module.exports = {send}

node书写上传图片
注意 此处的haha是需要前后端保持一致的 将上传的文件进行判断
访问静态目录的时候要app.use(“/public”,express.static(path.join(__dirname,‘./static’)))
拼接路径 __dirname读取到的就是我现在文件所在的路径

const express = require("express");
const router = express.Router()
const multer = require("multer")
// 配置
var storage = multer.diskStorage({
    // 指定文件路径
    destination: function (req, file, cb) {
        cb(null, "./static/img")
    },
    filename: function (req, file, cb) {
        //   // 指定文件名
        // 不让后缀名发生改变 拿以前的名字
        let ext=file.originalname.split(".")[1]
        let tmpname=(new Date()).getTime()+parseInt(Math.random()*9999)
        console.log(tmpname);
        console.log(ext);
        cb(null,`${tmpname}.${ext}`)
        
    }
});
var upload = multer({
    storage:storage
});
router.post("/upload",upload.single("haha"),(req,res)=>{
    // console.log(res.file);
    let {size,mimetytpe,path}=req.file;
    console.log(req.file);
    
    let types=["jpg","jpeg","png","gif"]//允许上传的数据类型
    // 在使用split函数时候应当是将数据先判断
    // var tmpType
    // if(mimetytpe){
    //     tmpType=mimetytpe.split("/")[1]
    // }
    // console.log(tmpType);
    // 将信息转化为数组 image/jpg 进行拆分
    if(size>=500000){
        return res.send({err:-1,msg:"尺寸过大"})
    }else if(mimetytpe){
       let tmpType=mimetytpe.split("/")[1]
        if(types.indexOf(tmpType)==-1){
            return res.send({err:-2,msg:"格式不正确"})
        }
    }
    else{
        let url=`public/img/${req.file.filename}`
        res.send({err:0,msg:"上传成功",img:url})
    }
    // haha要上传的图片数据的key值 前后端统一
    // {
    //     "haha":图片数据
    // }
})
module.exports = router

axios拦截器

axios.defaults.baseURL = "前缀url"
//请求拦截器 
axios.interceptors.request.use(function (config) {
    console.log("请求拦截器成功");
    return config;
}, function (err) {
    console.log("请求拦截器失败");
    console.log(err);
    return Promise.reject(err);
})
// 响应拦截器
axios.interceptors.response.use(function (response) {
    console.log("响应拦截器成功");
    return response.data;
    // 返回特定的信息
}, function (err) {
    console.log("响应拦截器失败");
    return Promise.reject(err);
})

项目目录结构
在这里插入图片描述
总结
拦截器配一个就行了
反正天天开心

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值