使用存储库模式来抽象 API 绝对是个好主意!无论您使用@nuxtjs/axios
模块或@nuxt/http
模块中,您可以将任一实例传递给存储库类/函数。下面是抽象的“repository.js”文件的真实示例。
export default $axios => resource => ({
index() {
return $axios.$get(`/${resource}`)
},
create(payload) {
return $axios.$post(`/${resource}`, payload)
},
show(id) {
return $axios.$get(`/${resource}/${id}`)
},
update(payload, id) {
return $axios.$put(`/${resource}/${id}`, payload)
},
delete(id) {
return $axios.$delete(`/${resource}/${id}`)
}
})
然后,您可以创建一个插件来初始化端点的所有不同类型的存储库:
import createRepository from '~/path/to/repository.js'
export default (ctx, inject) => {
const repositoryWithAxios = createRepository(ctx.$axios)
const repositories = {
posts: repositoryWithAxios('posts'),
users: repositoryWithAxios('users')
//...
}
inject('repositories', repositories)
}
进一步阅读:在 Nuxt.js 中组织和解耦 API 调用 https://blog.lichter.io/posts/nuxt-api-call-organization-and-decoupling/