Separazione tra richieste di siti Web regolari e richieste API

1

Ho dei dubbi sull'architettura di un'app Web quando si tratta di differenziare tra le normali richieste di siti Web e le richieste API.

Allo scopo di spiegare, supponiamo che io sia il creatore di un servizio (prendiamo darksky.net per esempio). Offro sia un sito web che le API.

Da un lato ho i miei endpoint API, ad esempio GET https://api.darksky.net/forecast/[key]/[latitude],[longitude] che consentono a uno sviluppatore di estrarre previsioni del tempo per una coppia [latititude/longitude] specifica. Voglio che le persone paghino per utilizzare queste API. Per farlo, devono iscriversi al sito Web e pagare un abbonamento per ottenere un token ( [key] ) che consente loro di autenticare le API e quindi eseguire richieste (come utilizziamo il token per autenticare le richieste non importa).

Dall'altro lato ho anche un sito Web a cui voglio che le persone possano accedere per cercare le previsioni del tempo. C'è un modulo di ricerca in cui è possibile digitare una posizione e il sito Web mostra le previsioni per quella posizione. Se voglio sapere le previsioni per San Francisco, scrivo San Francisco e cerco. In un sito Web moderno, ciò significa che esiste un codice JavaScript associato al modulo di posizione che esegue una richiesta al server per ottenere le informazioni. Molto probabilmente, il nome della posizione viene anche tradotto in una coppia [latitude, longitude] e la richiesta viene eseguita dalle coordinate anziché dal nome della posizione.

Ora, ecco che arriva il mio dubbio. Mi aspetto che il sito web utilizzi le API, poiché l'API fa esattamente ciò che vuole il sito Web, ovvero restituire le informazioni sulle previsioni del tempo di una località specifica. Il codice JS del sito Web interpreta quindi la risposta dell'API e lo utilizza per visualizzare graficamente le informazioni sul sito Web. Ma questa non sarebbe una buona soluzione. Fare questo significherebbe che dovremmo avere un token memorizzato da qualche parte sul codice lato client per autenticare le richieste. Ciò consentirebbe a chiunque sia in grado di fare F12 su una pagina Web e passare attraverso il codice per accedervi e fondamentalmente ottenere un token API gratuito da utilizzare, invece di pagare un abbonamento al servizio API.

Quindi, come differenziate le due situazioni?

Per favore fatemi sapere se la mia domanda non è chiara.

Grazie mille!

    
posta smellyarmpits 16.11.2018 - 10:14
fonte

1 risposta

1

Chiedi al sito web di utilizzare l'API, ma dal lato server.

client -> website (secret token on server) -> api -> website -> client
    
risposta data 16.11.2018 - 11:36
fonte

Leggi altre domande sui tag