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