Skip to content

Instantly share code, notes, and snippets.

@Kelin2025
Created September 24, 2017 00:03
Show Gist options
  • Save Kelin2025/419ba54da5341b379a2d4b2a8fb219ea to your computer and use it in GitHub Desktop.
Save Kelin2025/419ba54da5341b379a2d4b2a8fb219ea to your computer and use it in GitHub Desktop.
For apicase website
import Apicase from 'apicase'
const headers = { 'Content-Type': 'multipart/form-data' }
const catalog = {
url: 'catalog',
services: [
{ name: 'category', url: 'categories', method: 'get' },
{ name: 'platform', url: 'platforms', method: 'get' },
{ name: 'apps', url: 'apps', method: 'get' },
{ name: 'categoryApps', url: '/catalog/apps/', method: 'get' },
{ name: 'app', url: 'apps/:id',
services: [
{ name: 'get', url: '', method: 'get' },
{ name: 'delete', url: '', method: 'delete' },
{ name: 'add', url: '', method: 'post' },
{ name: 'download', url: '/download', method: 'get' }
]
},
{ name: 'developer', url: 'developer',
services: [
{ name: 'app', url: 'apps',
services: [
{ name: 'getOne', url: ':id' }
]
},
{ name: 'request', url: 'request',
services: [
{ name: 'apps', url: '', method: 'get' },
{ name: 'create', url: '', method: 'post' },
{ name: 'app', url: ':id', method: 'get' },
{ name: 'update', url: ':id', method: 'post' },
{ name: 'delete', url: ':id', method: 'delete' }
]
},
{ name: 'img', url: 'image',
services: [
{ name: 'upload', url: '', method: 'post', headers }
]
},
{ name: 'file', url: 'content',
services: [
{ name: 'post', url: ':id', method: 'post' },
{ name: 'upload', url: '', method: 'post', headers }
]
}
]
}
]
}
export default new Apicase(catalog)
import axios from './axios-custom'
export const category = () => axios.get('/catalog/categories/')
export const platform = () => axios.get('/catalog/platforms/')
export const apps = () => axios.get('/catalog/apps/')
export const categoryApps = (id) => axios.get('/catalog/apps/', { params: { cat: id } })
export const app = {
get: id => axios.get(`catalog/apps/${id}`),
add: id => axios.post(`catalog/apps/${id}/`),
delete: id => axios.delete(`catalog/apps/${id}`),
download: id => axios.get(`catalog/${id}/download`)
}
export const developer = {
requestApp: (id) => axios.get(`/catalog/developer/request/${id}`),
requestApps: () => axios.get('/catalog/developer/request/'),
delRequestApp: (id) => axios.delete(`/catalog/developer/request/${id}`),
createApp: (data) => axios.post('/catalog/developer/request/', data),
updateApp: (id, data) => axios.post(`/catalog/developer/request/${id}/`, data),
app: (id = '') => id === ''
? axios.get('/catalog/developer/apps')
: axios.get(`/catalog/developer/apps/${id}`)
}
export const img = {
upload: (data) => axios.post('/catalog/developer/image/', data, { headers: { 'Content-Type': 'multipart/form-data' } })
}
export const file = {
post: (id, data) => axios.post(`/catalog/developer/content/${id}/`, data),
upload: (data) => axios.post('/catalog/developer/content/', data, { headers: { 'Content-Type': 'multipart/form-data' } })
}
import Apicase from 'apicase'
// Declare hooks
const hooks = {
before: ({ meta, headers }, then) =>
meta.needAuth && !headers.token
? then.next()
: then.abort({ type: 'notAuthorized' }),
notAuthorized () {
alert('You are not authorized')
},
error ({ status }) {
if (status !== 401) return
alert('You are not authorized')
localStorage.removeItem('token')
}
}
// Declare headers
const headers = () => ({
token: localStorage.getItem('token')
})
// And there you don't need any trash
const api = new Apicase({
url: 'api/v1',
hooks,
headers,
services: [
{ name: 'foo', url: 'foo/bar' },
{ name: 'withAuth', url: 'baz', meta: { needAuth: true } }
]
})
// Just call it
api.go('withAuth')
import axios from './axios-custom'
export const category = () => axios.get('/catalog/categories/')
export const platform = () => axios.get('/catalog/platforms/')
export const apps = () => axios.get('/catalog/apps/')
export const categoryApps = (id) => axios.get('/catalog/apps/', { params: { cat: id } })
export const app = {
get: id => axios.get(`catalog/apps/${id}`),
add: id => axios.post(`catalog/apps/${id}/`),
delete: id => axios.delete(`catalog/apps/${id}`),
download: id => axios.get(`catalog/${id}/download`)
}
export const developer = {
requestApp: (id) => axios.get(`/catalog/developer/request/${id}`),
requestApps: () => axios.get('/catalog/developer/request/'),
delRequestApp: (id) => axios.delete(`/catalog/developer/request/${id}`),
createApp: (data) => axios.post('/catalog/developer/request/', data),
updateApp: (id, data) => axios.post(`/catalog/developer/request/${id}/`, data),
app: (id = '') => id === ''
? axios.get('/catalog/developer/apps')
: axios.get(`/catalog/developer/apps/${id}`)
}
export const img = {
upload: (data) => axios.post('/catalog/developer/image/', data, { headers: { 'Content-Type': 'multipart/form-data' } })
}
export const file = {
post: (id, data) => axios.post(`/catalog/developer/content/${id}/`, data),
upload: (data) => axios.post('/catalog/developer/content/', data, { headers: { 'Content-Type': 'multipart/form-data' } })
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment