1
API 호출을 세 개의 레이어로 구분했습니다. component
, repository
및 apihelper
입니다. refresh_tokens
에 대한 로직을 apihelper.js
에 입력하고 싶습니다. 이 작업을 수행하면 401
응답 상태를 얻은 후 다시 실행되는 것처럼 apihelper
이 실행되지만 데이터는 다시 component
으로 전달되지 않습니다. 내가 그 논리를 구성 요소에 재실행시킬 수는 있겠지만 더 많은 호출을 추가 할 때 많은 중복 코드가되는 것처럼 보입니다. 그것이 아마 자바 스크립트 약속에 대한 나의 얕은 이해로 인한 것 같지만 저는 자바 스크립트 초보자입니다.오류시 함수를 다시 실행하고 결과를 넘겨주세요.
구성 요소
<script>
import breweryrepository from '@/repository/breweryrepository.js'
export default {
mounted() {
this._getTotalBreweries();
},
methods: {
_getTotalBreweries() {
breweryrepository.getTotalBreweries()
.then((response) => {
if(response.data)
{
this.totalNumberOfBreweries = response.data.totalBreweries;
}
})
}
},
data() {
return {
totalNumberOfBreweries: ''
}
}
}
</script>
저장소
import apihelper from '@/helpers/ApiHelper.js';
export default {
getTotalBreweries() {
return new Promise(function(resolve, reject) {
resolve(apihelper.apiCall('/brewery/totalnumber'));
});
}
}
Apihelper
import axios from 'axios';
var querystring = require('querystring');
import { store } from '../store/store.js';
import auth from '@/auth/auth.js'
export default {
apiCall(url) {
return axios.get(store.state.baseUrl + url, { 'headers': auth.getAuthHeader() })
.catch((error) => {
if(error.response.status == 401)
{
console.log("401 error, running refresh and apicall again");
auth.refreshToken();
this.apiCall(url);
}
})
}
}