nuxt数据请求

1.创建项目(自行百度)
2.安装axios、proxy模块

在项目按住‘shift’+鼠标右键,打开命令窗口,输入npm i @nuxtjs/axios @nuxtjs/proxy -D,会自动下载axios和proxy模块(解决跨域问题
3.修改nuxt.config.js
在nuxt.config.js里添加代码

export default{
	...
	modules: [
    	'@nuxtjs/axios',
    	'@nuxtjs/proxy'
	],
	axios: {
		proxy: true,
	},
	proxy: {
		'/api': {
			target: 'https://xxx.com/api', // 你的接口服务器地址,以我自己的项目
			pathRewrite: {
				'^/api' : '/'
			}
		}
	}
}

4.创建请求js
在这里插入图片描述

import axios from 'axios'
let cancel ,promiseArr = {}//promiseArr拦截使用
const CancelToken = axios.CancelToken
axios.defaults.baseURL = '/api'

axios.defaults.headers = {
  'X-Requested-With': 'XMLHttpRequest',
  'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
}
//请求超时时间
axios.defaults.timeout = 30000

// 跨域是否带cookie
axios.defaults.withCredentials = false
export default{
  //get请求
  get(url, data) {
    return new Promise((resolve) => {
      axios({
        method: 'get',
        url: url,
        params: data,
        cancelToken: new CancelToken(c => {
          cancel = c
        })
      }).then(res => {
        resolve(res)//注意点1
      })
    })
  },
  //post请求
  post(url, data) {
    let storage = window.localStorage
    return new Promise((resolve) => {
      axios({
        method: 'post',
        url: url,
        data: JSON.stringify(data),//将post请求的数据转化为json字符串
        headers: { 'Authorization': storage.token,'Content-Type': 'application/json; charset=UTF-8'},//注意点2
        cancelToken: new CancelToken(c => {
          cancel = c
        })
      }).then(res => {
        resolve(res)
      })
    })
  },
  //delete请求
  delete(url, data) {
    let storage = window.localStorage
    return new Promise((resolve) => {
      axios({
        method: 'delete',
        url: url,
        data: JSON.stringify(data),//将post请求的数据转化为json对象
        headers: { 'Authorization': storage.token, 'Content-Type': 'application/json; charset=UTF-8' }
      }).then(res => {
        resolve(res)
      })
    })
  },
  //put请求
  // put(url, data) {
  //   let storage = window.localStorage
  //   return new Promise((resolve) => {
  //     axios({
  //       method: 'post',
  //       url: url,
  //       data: qs.stringify(data),//注意点3
  //       headers: { 'Authorization': storage.token },
  //     }).then(res => {
  //       resolve(res)
  //     })
  //   })
  // },
}

  1. resolve(res)是接收请求到的数据,然后在return给调用的函数。如果是 resolve(res),那么函数获取到的数据就是为在这里插入图片描述
    但是项目只要data里的数据,那么就要改成resolve(res.data)
  2. ‘Authorization’: storage.token是要用到用户的token,这个就要自己去获取了
  3. qs.stringify(data);qs是一个url参数转化(parse和stringify)的js库,要用的话百度qs.js去下载

5.编写请求函数(这个就根据自己项目来创建,不必和我一样)
在这里插入图片描述

import http from "~/http/";
export function getList() {
    return http.get('/xxxxx')
}

然后在需要用到接口函数的页面调用
例如

<template>
  <div>
    首页
  </div>
</template>
<script>
	import {getList} from '~/api/index.js'
	export default{
		methods:{
			get(){
				getList().then(res=>{
					console.log(res)
				})
			}
		},
		mounted(){
			this.get()
		}
	}
</script>

输出
在这里插入图片描述

最后,如果我的笔记对您有帮助,请给我一个赞~ 谢谢!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值