2017-12-07 43 views
10

나는 redux와 통합 된 네이티브 엑스 엑스를 사용하여 Android 앱을 제작 중입니다. API는 fetch 메소드를 사용하여 호출되지만 항상 캐시 된 결과가 표시됩니다. 서버가 요청을 두 번받지 못했습니다. 다음 코드로 캐시를 사용하지 못하게했습니다.React 네이티브 가져 오기 API는 캐싱을 사용 중지 할 수 없습니다.

export const mymails = (token) => { 
    return fetch(
     API_URL+'?random_number='+ new Date().getTime(), { 
     method: 'GET', 
     headers: getHeaders(token) 
    }) 
    .then(response => response.json()); 
}; 

getHeaders = (token) => { 
    return { 
     'Accept': 'application/json', 
     'Content-Type': 'application/json', 
     'Authorization': 'Token token='+token, 
     'Cache-Control': 'no-cache, no-store, must-revalidate', 
     'Pragma': 'no-cache', 
     'Expires': 0 
    }; 
} 

나는 우체부 클라이언트를 통해 API를 호출 할 때 다른 결과 (캐싱되지 않음)를 볼 수 있습니다. 난 매개 변수로 임의의 숫자를 추가하고 캐시 제어 헤더를 설정했지만 캐시 된 결과를 반환 했어요. 내가 할 수있는 다른 것이 있니?

감사합니다.

+1

재미있는 동일한에 대한 링크를 따를 수

다음과

보십시오. AFAIK, 가져 오기 api는 자동으로 아무것도 캐시하지 않습니다. 어쩌면 API 끝에서 캐싱이 발생했을 것입니까? api 엔드 포인트를 공유 할 의향이 있습니까? –

+0

"Cache-Control": 'no-cache'는 반드시 작동해야합니다. API 끝점을 공유하여 문제를 확인할 수 있습니까? –

+0

죄송합니다. 서버에서 실수였습니다. 나는 다른 기능을 부르며 내가 편집하고있는 기능이 아닙니다. 아. 멍청한 나. –

답변

3

요청을 가져올 헤더를 설정하는 방법에 문제가 있어야합니다. 당신은 Official Fetch API

const mymails = (token) => { 
 

 
    var myHeaders = new Headers(); 
 
    myHeaders.set('Accept', 'application/json'); 
 
    myHeaders.set('Content-Type', 'application/json'); 
 
    myHeaders.set('Authorization', 'Token token=' + String(token)); 
 
    myHeaders.set('Cache-Control', 'no-cache'); 
 
    myHeaders.set('Pragma', 'no-cache'); 
 
    myHeaders.set('Expires', '0'); 
 

 
    return fetch(
 
     API_URL + '?random_number=' + new Date().getTime(), { 
 
      method: 'GET', 
 
      headers: myHeaders 
 
     }) 
 
     .then(response => response.json()); 
 
};

+0

가이가 자신의 서버에서 실수를 저질렀다고 말했습니다. 가져 오기 또는 JS 레벨에 관한 것이 아닙니다. –

+0

예, 그 경우 질문을 삭제해야합니까? –