Как установить ответное сообщение "403 Запрещено" через axios? - PullRequest
0 голосов
/ 08 мая 2019

Я работаю с Token API с использованием этого плагина JWT :

Хорошо работает с кодом состояния 200.Но как я могу обработать сообщение об ошибке 403 Forbidden?Как я могу установить свое собственное сообщение об ошибке, когда код состояния 403 Forbidden?

loginAction.js файл

export const LoginAction = (FormData) => {
  return (dispatch) => {
    axios({
      method: 'post',
      headers: { 'Content-Type': 'application/json' } ,
      url: API,
      data: FormData,
      })
      .then(function (response) {
        localStorage.setItem('tpwToken', response.data.token);
        dispatch({
          type: 'SET_USER',
          user: response.data,
          message: response.data.message
      })
    })
    .catch(function(error){
      console.log(error.message)
    })
  }
}

loginReducer.js

export const loggedUserData = (state = initialState, action = {}) => {
  switch(action.type) {
    case "SET_USER":
      return {
        ...state,
        isAuthenticated: !isEmpty(action.user),
        user: action.user,
        message: action.message
      }

    default: return state  
  }
}

export default loggedUserData;

console error message enter image description here

Ответы [ 2 ]

0 голосов
/ 08 мая 2019

Вы можете добавить условие для проверки кода состояния из опций конфигурации. Попробуйте что-то вроде этого.

export const LoginAction = (FormData) => {
  return (dispatch) => {
    axios({
      method: 'post',
      headers: { 'Content-Type': 'application/json' } ,
      url: API,
      data: FormData,
      validateStatus: function (status) {
         if(status === 403){
             // do something
          }
       }
      })
      .then(function (response) {
        localStorage.setItem('tpwToken', response.data.token);
        dispatch({
          type: 'SET_USER',
          user: response.data,
          message: response.data.message
      })
    })
    .catch(function(error){
      console.log(error.message)
    })
  }
}
0 голосов
/ 08 мая 2019

Внутри вашего ответа API ... вы будете проверять статус по ответу сетевого вызова (ajax call).

.then(function (response) {
    if(response.data.status === 403){
        // throw error or log it
    }
    ...rest of the code
})
...