Estoy llamando a paapi de Amazon en un sitio de Nextjs alojado en Vercel. Como la mayoría de las API, Amazon limita la cantidad de transacciones por segundo y por día. Estoy usando la biblioteca amazon-paapi React dentro de una ruta API en pages/api/amazon-product.js .
Estoy usando Cache-Control para lograr esto:
export default async function handler(req, res) { const { productId } = req.body const {commonParameters, requestParameters} = getRequestParams(productId) amazonPaapi.GetItems(commonParameters, requestParameters) .then(response => { // Cache response to reduce API calls res.setHeader('Cache-Control', 's-maxage=86400') return res.status(201).json({ data: response.ItemsResult.Items[0] }) }) .catch(error => { return res.status(400).json({ error: error }) }); } Dado que res.setHeader() está dentro del método amazonPaapi.GetItems() , me pregunto si no se almacenará en caché porque se llamará a ese método independientemente de si lo que devuelve está en caché.
Parece que querríamos verificar si la edad máxima ha expirado antes de llamar al método amazonPaapi.GetItems() . ¿Es este el caso? Si es así, ¿cómo podemos hacer esto?
Su implementación asume que los clientes de su API respetan el encabezado de caché y funciona bien en ese caso. Sin embargo, no protege de los clientes que explícitamente deciden ignorar el encabezado del caché.
En tales casos, querrá crear un caché en su código con la clave que identifica de forma única la llamada a la API de Amazon. Puede establecer la caducidad en este caché y solo llamar a la API de Amazon después de una duración específica.