Qualche articolo fa ho parlato di Laravel e come modificare il suo limite di richieste.
Come ho detto proprio in quell’articolo, lavorando ad un progetto che mixa Laravel per il backend e NextJS per il Frontend mi sono nuovamente imbattuto nella problematica del RateLimit e dell’annoso errore 429: Too many request.
Visto che non è apprezzabile caricare il server di Backend con le richieste, ho pensato ad un alternativa lato frontend, quindi fruendo della funzione di staticizzazione delle Props di Next Js con un piccolo delay. Ho deciso quindi di impostare un delay (tramite Promise in Javascript) affinché, secondo un intervallo definito ci fosse la chiamata asincrona. In questo modo anche se durante un loop, il sistema avrebbe “temporeggiato” tra una chiamata ed un’altra.
Il progetto comunque è visionabile sul mio Github, in ogni caso, si tratta soltanto di creare due funzioni, una delegata alla gestione dell’altra, che non è altro che una Promise:
export async function avoidRateLimit() { await sleep() } function sleep(ms = 500) { return new Promise((res) => setTimeout(res, ms)) }
export async function getData() { await avoidRateLimit(500) const res = await fetch('...') const data = await res.json() return data }