2017-12-07 20 views
10

Tôi đang xây dựng ứng dụng android bằng cách sử dụng quảng cáo gốc tương tác được tích hợp với redux. API được gọi bằng phương thức tìm nạp, nhưng luôn luôn kết quả được lưu trong bộ nhớ cache được hiển thị. Máy chủ không nhận được yêu cầu lần thứ hai. Tôi đã thử tắt bộ nhớ cache với mã sau.API tìm nạp gốc phản hồi không thể vô hiệu hóa bộ nhớ đệm

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 
    }; 
} 

Khi tôi gọi API qua ứng dụng khách Postman tôi thấy kết quả khác (không được lưu trong bộ nhớ cache). Tôi đã thử thêm số ngẫu nhiên làm tham số và đặt tiêu đề kiểm soát bộ nhớ cache, nhưng vẫn trả về kết quả được lưu trong bộ nhớ cache. Có bất cứ điều gì khác tôi có thể thử.

Cảm ơn

+1

Thú vị. AFAIK, tìm nạp api không tự động lưu trữ bất cứ thứ gì. Có thể bộ nhớ đệm đang xảy ra ở cuối API? bạn có sẵn lòng chia sẻ điểm cuối api để tôi có thể chơi với nó không? –

+0

Tôi nghĩ 'Cache-Control': 'no-cache'' phải hoạt động. Bạn có thể vui lòng chia sẻ điểm cuối API để chúng tôi có thể kiểm tra sự cố –

+0

Xin lỗi các bạn, đó là lỗi trong máy chủ. Tôi gọi một chức năng khác chứ không phải chức năng tôi đang chỉnh sửa. Ah. tôi ngu ngốc. –

Trả lời

3

Có vấn đề với cách bạn thiết lập tiêu đề để tìm nạp yêu cầu.

Hãy thử với sau,

Bạn có thể làm theo các liên kết cho cùng trong 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

Guy đã nói rằng ông đã có một sai lầm trong máy chủ của mình, nó không phải là về lấy hoặc cấp JS. –

+0

vâng, trong trường hợp đó, anh ta nên xóa câu hỏi, phải không? –

Các vấn đề liên quan