Skip to content

Instantly share code, notes, and snippets.

@thaycacac
Last active June 6, 2020 08:13
Show Gist options
  • Save thaycacac/9df12c6d9e40bb3d50c751abe77e849f to your computer and use it in GitHub Desktop.
Save thaycacac/9df12c6d9e40bb3d50c751abe77e849f to your computer and use it in GitHub Desktop.
[VueJS] API Pattern
import PostsList from './PostsList'
import RepositoryFactory from '../repositories/RepositoryFactory'
const PostRepository = RepositoryFactory.get('posts')
export default {
methods: {
async fetch() {
const { data } = await PostsRepository.get()
}
}
}
import Repository from './Repository'
const resource = '/posts'
export default {
get() {
return Repository.get(`${resource}`)
}
getPost(postId) {
return Repository.get(`${resource}/${postId}`)
}
createPost(payload) {
return Repository.post(`${resource}`, payload)
}
updatePost(payload) {
return Repository.put(`${resource}`, payload)
}
deletePost(payload) {
return Repository.delete(`${resource}/${postId}`)
}
}
import axios from 'axios'
const baseDomain = 'https://example.com'
const baseUrl = `${baseDomain}/api/v1`
export default axios.create({
baseUrl,
header: { "Authorization": "Bearer yourToken" }
})
import PostsRepository from './postsRepository'
const repositories = {
posts: PostsRepository
}
export const RepositoryFactory = {
get: name => repositories[name]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment