Mi scusi @MarkAmery ed Eugene, ma non è corretto.
La tua app js + html (client) in esecuzione nel browser PU essere configurata per escludere chiamate dirette non autorizzate all'API come segue:
- Primo passaggio: configura l'API per richiedere l'autenticazione. Il client deve prima autenticarsi tramite il server (o qualche altro server di sicurezza), ad esempio chiedendo all'utente umano di fornire la password corretta.
Prima dell'autenticazione le chiamate all'API non vengono accettate.
Durante l'autenticazione viene restituito un "token".
Dopo l'autenticazione verranno accettate solo le chiamate API con il "token" di autenticazione.
Ovviamente in questa fase solo gli utenti autorizzati che dispongono della password possono accedere all'API, sebbene se sono programmatori che eseguono il debug dell'app, possono accedervi direttamente a scopo di test.
- Secondo passo: ora configura un'API di sicurezza aggiuntiva, che deve essere chiamata entro un breve limite di tempo dopo che l'app client js + html è stata inizialmente richiesta dal server. Questo "callback" dirà al server che il client è stato scaricato con successo. Limita le chiamate API REST in modo che funzionino solo se il client è stato richiesto di recente e con successo.
Ora per poter utilizzare la tua API devono prima scaricare il client ed effettivamente eseguirlo in un browser. Solo dopo aver ricevuto con successo la richiamata e quindi l'immissione dell'utente entro un breve lasso di tempo, l'API accetterà le chiamate.
Quindi non devi preoccuparti che questo possa essere un utente non autorizzato senza credenziali.
(Il titolo della domanda, "Come posso proteggere le chiamate API REST", e dalla maggior parte di ciò che dici, questa è la tua principale preoccupazione, e non la domanda letterale di COME viene chiamata la tua API, ma piuttosto DA CHI, corretta? )