Completed API module
Added calls to an external API and JWT authentication to the webapplicationmaster
parent
160dd6e20d
commit
8aef2f5177
@ -0,0 +1,60 @@
|
|||||||
|
import axios from 'axios'
|
||||||
|
|
||||||
|
axios.defaults.baseURL = 'https://api.fullstackweekly.com'
|
||||||
|
|
||||||
|
// To avoid adding the token to every request we make to a service we can
|
||||||
|
// instead use an interceptor
|
||||||
|
axios.interceptor.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 = {
|
||||||
|
getPosts (categoryId) {
|
||||||
|
// I guess we can do some string format like operations here
|
||||||
|
// This is a promise so once it is resolved we will receive the response
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
axios.get(`/wp-json/wp/v2/posts?categories=${categoryId}&per_page=6`)
|
||||||
|
.then(response => {
|
||||||
|
resolve(response.data)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}, // getPosts
|
||||||
|
getProfile () {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
axios.get('/services/profile.php' // ,
|
||||||
|
/*
|
||||||
|
{
|
||||||
|
headers: {
|
||||||
|
'Authorization': `Bearer ${window.localStorage.getItem('token')}`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
)
|
||||||
|
.then(response => {
|
||||||
|
resolve(response.data)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}, // getProfile
|
||||||
|
login (credentials) { // credemtials will be a javascript object
|
||||||
|
// returns a new promise
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
axios.post('/services/auth.php', credentials)
|
||||||
|
.then(response => {
|
||||||
|
resolve(response.data)
|
||||||
|
}).catch(response => {
|
||||||
|
reject(response.status)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
} // login
|
||||||
|
}
|
||||||
|
|
||||||
|
export default appService
|
Loading…
Reference in New Issue