asyncdata连接php,Nuxt中怎么进行封装数据接口在asyncData中进行请求

34f04f567dea4e179c890034f17a1399.png

使用如图方法进行请求数据,但是接口改变的话不方便修改。

处理方法:

/plugins目录下建立main.js 内容为:import Vue from 'vue' // vue 文件引入 - 方便在vue方法内容直接 this 调取

import Api from './api' // 自定变量内容 其他自便

let main = {

install(Vue) {

Vue.prototype.$api = Api; // 变量的内容 后期可以在vue中 this->$api.xxx 使用

}

};

Vue.use(main); // 这里不能丢

// 这里是 为了在 asyncData 方法中使用

export default ({ app }, inject) => {

// Set the function directly on the context.app object

app.$api = Api // 名称

在nuxt.config.js文件中进行引入(如下图展示)

6d0b10aa977566ac3ccedebe9af3a011.png

/plugins/api.js 文件内容://封装数据接口

let host = 'http://www.123.com/';

module.exports = {

getIndex:host+'index/',

getBrand: host + 'brand/index/',

getArea: host + 'area/index/',

getSubject:host+'category/index/',

getZhifa:host+'zhifa/index/',

getHospitalList:host+'hospital/lists',

getHospital:host+'hospital/shows',

getDoctorList:host+'doctor/lists',

getDoctor:host+'doctor/shows',

}在页面中使用async asyncData (ctx) {

let api=ctx.app.$api;

let page=ctx.query&& ctx.query.hasOwnProperty("page")?ctx.query.page:1;

let [branddata,areadata,categorydata,hospital] = await Promise.all([

ctx.$axios.get(api.getBrand),

ctx.$axios.get(api.getArea),

ctx.$axios.get(api.getSubject),

ctx.$axios.get(api.getHospitalList,{params:{

page:page}

})

])

return {

branddata: branddata.data.data,

areadata:areadata.data.data,

categorydata:categorydata.data.data,

hospital:hospital.data

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值