axios (偏向Vue) 和fetch (偏向React) 的封装 包括nodejs后端代码

news/2024/7/15 19:18:01 标签: vue.js, react.js, 前端

axios

定义一个 axios.js 文件 配置请求拦截器和响应拦截器以及默认服务器基础地址。

axios.js 文件
import axios from 'axios'
//配置基础服务器地址
axios.defaults.baseURL = 'http://127.0.0.1:3000/'
axios.interceptors.request.use(config => {
    return config;
}, error => {
    return Promise.reject(error);
});

axios.interceptors.response.use(response => {
    return response;
}, error => {
    return Promise.reject(error);
});
定义一个或多个单独文件 封装请求方法 命名为 index.js 或其他名字
安装qs: npm i qs
import axios from './axios'  //导入刚才写的axios.js文件 路径根据实际情况来写
import qs from 'qs'
//get  获取用户信息
export const getNews = page => axios.get(`data/news?page=${page}`)
//post  提交用户信息
export const postInfo = data => axios.post("data/info", qs.stringify(data))
在Vue组件中 使用
<template>
  <div class="app"></div>
</template>
<script>
import { postInfo, getNews } from "@/axios/index"; //路径根据实际情况来写
export default {
  mounted() {
    getNews(3)
      .then((res) => {
        console.log(res.data); //{"page":"3"}
      })
      .catch((err) => {
        console.log(err);
      });
    postInfo({ uid: 3, pid: 4 })
      .then((res) => {
        console.log(res); //{ uid: '3', pid: '4' }
      })
      .catch((err) => {
        console.log(err);
      });
  },
};
</script>

fetch

定义一个 fetch.js 文件 定义服务器的基础地址
export default {
  //自定义 服务器的基础地址
  url: 'http://127.0.0.1:3001/'
}
定义一个或多个 service.js 文件 封装不同类型的请求
import basefetch from "./fetch"  //引入刚才写的 fetch.js文件  注意fetch不要重名
//每一个方法都单独导出  页面中 用解构 导入
//post  提交表单数据。。。
export const postInfo = (uid, pid) => {
  let url = basefetch.url + 'data/info'
  let options = {
    method: 'POST',
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
    body: `uid=${uid}&pid=${pid}`
  }
  return fetch(url, options).then(res => res.json())
}

//get   获取新闻信息。。。
export const getNews = page => {
  page = page ? page : 1
  let url = basefetch.url + 'data/news?page=' + page
  return fetch(url).then(res => res.json())
}
React 项目的.js组件 中 使用封装的fetch
import React from 'react'
import { postInfo, getNews } from '../services';  //路径根据实际情况来写
export default function Index() {
  getNews(3).then((res) => {
    console.log(res);//{"page":"3"}
  }).catch((err) => {
    console.log(err);
  });
  postInfo(3, 4).then((res) => {
    console.log(res);//{ uid: '3', pid: '4' }
  }).catch((err) => {
    console.log(err);
  });
  return (
    <>
      {/* header */}
      {/* banner */}
      {/* main */}
      {/* footer */}
    </>
  )
}

服务器代码 nodejs

npm i express cors

const express = require("express")
const app = express()
const cors = require("cors")
app.use(express.urlencoded({ extended: false }));
app.use(cors())
app.get("/data/news", (req, res) => {
  res.send(req.query);
});

app.post("/data/info", (req, res) => {
  res.send(req.body);
});

app.listen(3001, () => {
  console.log("服务器开启,端口号:3001");
})

http://www.niftyadmin.cn/n/1064463.html

相关文章

怎么用python图片组成头像_如何利用python制作微信好友头像照片墙?

这个不难&#xff0c;主要用到itchat和pillow这2个库&#xff0c;其中itchat用于获取微信好友头像照片&#xff0c;pillow用于拼接头像生成一个照片墙&#xff0c;下面我简单介绍一下实现过程&#xff0c;代码量不多&#xff0c;也很好理解&#xff0c;实验环境win10python3.6p…

linux 卡在grub_启动Linux停留在grub提示符的解决方法

启动Linux停留在grub提示符的解决方法.txt26选择自信&#xff0c;就是选择豁达坦然&#xff0c;就是选择在名利面前岿然不动&#xff0c;就是选择在势力面前昂首挺胸&#xff0c;撑开自信的帆破流向前&#xff0c;展示搏击的风采。想让系统直接启动到Windows&#xff0c;不出现…

AC日记——传纸条 洛谷 P1006

题目描述 小渊和小轩是好朋友也是同班同学&#xff0c;他们在一起总有谈不完的话题。一次素质拓展活动中&#xff0c;班上同学安排做成一个m行n列的矩阵&#xff0c;而小渊和小轩被安排在矩阵对角线的两端&#xff0c;因此&#xff0c;他们就无法直接交谈了。幸运的是&#xff…

假如数组接收到一个null,那么应该怎么循环输出。百度结果,都需要提前判断。否则出现空指针异常。。我还是想在数组中实现保存和输出null。...

假如数组接收到一个null&#xff0c;那么应该怎么循环输出。因为foreach与obj.length都会报错。null不是对象&#xff0c;foreach中不能赋值&#xff1f; sp页面forEach一个存放对象的集合&#xff0c;怎么判断其中一个对象是否null&#xff1f; 分享| 2015-11-22 18:14lifeYes…

arduino 勘智k210_嘉楠科技:60多人的心血研发的勘智K210 AI芯片正式推出

在进入人工智能芯片领域之后&#xff0c;嘉楠科技创始人张楠赓感受最深的是人才的缺乏&#xff0c;“就是特别缺人才”。对于芯片领域的创业者来说&#xff0c;这是一个普遍问题。成立于2013年的嘉楠科技在人工智能芯片行业是一个新兵。2016年嘉楠科技开始部署开发人工智能(AI)…

bios提取工具_优秀垃圾佬进阶篇——自己改amd rx400和rx500系bios的详细教程

网上有许多刷BIOS的教程&#xff0c;从rx470一直可以刷到580都有&#xff0c;有点是方便。缺点就是你要去网站下载bios&#xff0c;而且找到的bios&#xff0c;不一定适合你自己用&#xff0c;即使各项参数很好&#xff0c;但是强刷后黑屏的可能性也是有的&#xff0c;现在很多…

[BZOJ1880] [Sdoi2009] Elaxia的路线 (SPFA 拓扑排序)

Description 最近&#xff0c;Elaxia和w**的关系特别好&#xff0c;他们很想整天在一起&#xff0c;但是大学的学习太紧张了&#xff0c;他们 必须合理地安排两个人在一起的时间。Elaxia和w**每天都要奔波于宿舍和实验室之间&#xff0c;他们 希望在节约时间的前提下&#xff0…

Webpack手动搭建Vue开发环境(脚手架)

这篇文章主要是认识一下vue脚手架的基础结构 和练习一下webpack打包 建议先看 WebPack基础 准备工作 新建文件夹 然后通过 VSCode 打开新建终端 执行 npm init -y在根目录新建 webpack.config.js 文件、src文件夹在src文件夹中 添加 main.js index.html App.vue文件 部署w…