typescript - Cerere API unică Angular 4 care rulează de mai multe ori
Am o problemă legată de aplicația Angular 4. Am creat o aplicație în care datele sunt preluate de la API-uri terțe. Problema pe care o întâmpin este că API-urile mele sunt apelate de mai multe ori, deși eu am trimis cererea o singură dată.
După ceva cercetare și dezvoltare, am descoperit că browserul rulează cererea flight cu metoda OPTIONS, dar după ce am verificat toate API-urile, am constatat că acestea rulează de mai multe ori, cu excepția cererii flight. De exemplu, pentru un API fac o cerere o singură dată, iar aceasta rulează de 4 ori: de două ori pentru OPTIONS și de două ori pentru cererea GET. Am verificat codul meu și cererea rulează o singură dată.
Înțeleg complet și sunt de acord cu cererea de zbor.
Am analizat toate apelurile de pe localul meu și aici este concluzia: 1. toate apelurile GET au un apel OPTIONS corespunzător, ceea ce, conform unui articol, nu reprezintă o problemă 2. Totuși, există apeluri multiple pentru acestea:
http://localhost:3005/tasks?taskID=1713&singular=1 = 4 Get call, 2 OPTIONS call - why?
http://localhost:3003/resources/30/configs = 2 GET call, 1 OPTIONS call - why?
http://localhost:3003/resources/146/configs = 2 GET cal, 1 OPTIONS call - why?
http://localhost:3003/resources/30/settings = 2 GET call, 1 OPTIONS call - why?
http://localhost:3003/resources/146/settings = 2 GET call, 1 OPTIONS call - why?
Acestea sunt singurele apeluri în care GET este efectuat de mai multe ori. Pentru toate celelalte apeluri, /environments, /settings, /admin, /currentevent, /currentshift… apelul GET se efectuează doar o dată.
return this.http.get(this.environment.SFDCServiceHost + 'getCurrentEvent?resourceId=' + id + '&singular=1', {headers: this._helperService.setRequestHeader(id)});
Răspuns #1
Este posibil să existe o problemă cu codul tău. Browser-ul nu adaugă și nu rulează nicio cerere suplimentară în afară de cererea de zbor. Pentru a verifica asta, mai întâi verifică de câte ori este apelată acea funcție. Sunt foarte sigur de asta pentru că am avut aceeași problemă.
Răspunsul #2
Aceasta este o funcție implicită a browser-ului. De fiecare dată când efectuați o cerere HTTP, browser-ul dvs. o va executa de două ori: una cu metoda pe care ați specificat-o și cealaltă cu metoda OPTIONS, unde browser-ul verifică dacă acea cerere există sau nu.
