20200610

Bindung·2020년 6월 10일
0

Today I Learned

목록 보기
15/16
post-thumbnail

스터디 내용

  • axios 연결 후에 나중에 대량의 api를 만들 생각으로 api파일을 따로 두고 index.js에 axios 내용을 넣는다.
  • axios 안에 DOMAIN 정보와 에러코드일 경우와 로그인으로 보내는 라우터 메소드를 만들어 준다.
    기본적인 request를 만들어 method, url, data를 받아넣고 axios에 객체처럼 값을 넣는다.
  • 에러가 없으면 데이터를 보내고 에러가 뜨게된다면 에러코드를 날리거나 아니면 401 에러일경우 로그인으로 보낸다.
  • 401 error : 유효한 인증 자격 증명이 없기 때문에 요청이 적용되지 않았음
import axios from 'axios'
import router from '../router'

const DOMAIN = 'http://localhost:3000'
const UNAUTHORIZED = 401
const onUnauthrorized = () => {
  router.push('/login')
}

const request = (method, url, data) => {
  return axios({
    method,
    url: DOMAIN + url,
    data
  }).then(result => result.data)
    .catch(result => {
      const { status } = result.response
      if (status === UNAUTHORIZED) return onUnauthrorized()
      throw Error(result)
    })
}

export const board = {
  fetch () {
    return request('get', 'boards')
  }
}
  • 인증되지 않는 유저는 라우터에서 한번더 걸러준다.
const requireAuth = (to, form, next) => {
  const isAuth = localStorage.getItem('token')
  const loginPath = `/login?rPath=${encodeURIComponent(to.path)}`
  isAuth ? next() : next(loginPath)
}

const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home,
    beforeEnter: requireAuth
  }
]

스터디 후기

  • 라우터로 토큰값(비록 로컬스토리지이지만..) 있는지 확인하여 없으면 로그인페이지 이동 -> befroeEnter 이용
  • 대량의 api를 만들 수 있으므로 새로운 디렉토리 생성
  • 기본적으로 데이터를 가져오는 DOMAIN을 만들고 401에 대한 에러 처리도 해준다.
profile
포기하지말고 천천히...

0개의 댓글