You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
booker/client/src/app.service.js

48 lines
1.3 KiB
JavaScript

import axios from 'axios'
axios.defaults.baseURL = 'http://localhost:5000'
// To avoid adding the token to every request we make to a service we can
// instead use an interceptor
axios.interceptors.request.use(function (config) {
// added for when the code is running on a server for serverside rendering
if (typeof window === 'undefined') {
return config
}
const token = window.localStorage.getItem('token')
if (token) {
config.headers.Authorization = `Bearer ${token}`
}
return config
})
const appService = {
getPing() {
return new Promise((resolve) => {
axios.get('/ping')
.then(response => {
resolve(response.data)
})
.catch(error => {alert(error)})
})
},
getAllBooks() {
return new Promise((resolve) => {
axios.get('/books')
.then(response => {
resolve(response.data)
})
.catch(error => {alert(error)})
})
},
addBook(payload) {
return new Promise((resolve, reject) => {
axios.post('/books', payload)
.then(response => { resolve(response.data)})
.catch(response => { reject(response.status)} )
})
},
}
export default appService