之前的文章有讲到 nuxt 封装API,并进行简略的调用。在理论的开发中,接口会越来越多,如果持续放到一个文件下,就会拥挤不堪,所以,能够依据功能模块,将接口拆分一下,在api 文件里别离引入不同功能模块的申请地址。具体操作如下:
1,创立API文件
1,在我的项目根目录下,创立一个API文件
|--src|--api |--module1.js |--module2.js
2,编写 module1.js 文件
export default ($axios) => ({ get() { return $axios.$get("/v1/XXX") }, put(data) { return $axios.$put("/v1/XXX",data) }, . . .})
2,批改plugins/api.js 文件
// 数据接口import module1Repository from "../api/module1"import module2Repository from "../api/module2"export default function ({ app, $axios, error }, inject) { const API = {} const api = $axios.create({ baseURL: process.env.BASE_URL, // url = base url + request url timeout: 5000, // request timeout }) // 设置response 拦挡 // api.interceptors.response.use( // // 接口谬误状态解决,也就是说无响应时的解决 // // response => { // // // 拦挡响应,做对立解决 // // if (response.status) { // // switch (response.status) { // // case 409: console.log('呜呜呜呜'); break; // // } // // } // // return response // // }, // error => { // console.log('哎呀,粗错啦', error.response) // // 返回接口返回的错误信息 // return Promise.reject(error) // } // ) API.module1API = module1Repository(api) API.module2API = module2Repository(api) app.api = API inject("api", API)}
3,应用
1,在 asyncData 中应用
async asyncData(context) { const routerInfo = context.params let moduleData = {} moduleData = await context.app.api.module1API.get() return { routerInfo, moduleData } },
2,在办法里应用。因为在plugins/api.js 中注入了API, inject("api", API)
才能够应用$api
getList(row) { this.$api.module1API.get().then((res) => { // ... }) .catch(e =>{ if(e.response.status === 409){ // console.log('谬误~~·',e.response) } }) },
记得在 nuxt.config.js 中引入,plugins/api.js 哦
以上就是nuxt + axios残缺的内容了。对于,路由拦挡,可依据理论须要进行封装解决。