Sì, il codice backend dell'API di Cloud Endpoint (Java o Python) è ancora in esecuzione su App Engine, quindi si ha lo stesso accesso a tutte le risorse che si avrebbero su App Engine.
Sebbene non sia possibile impostare cookie lato client per le sessioni, è comunque possibile ottenere un utente per una richiesta e archiviare i dati specifici dell'utente nel datastore. Come accennato da @Shay Erlichmen, se accoppi il datastore con memcache e una cache in contesto (come fa ndb), puoi fare queste ricerche molto velocemente.
Per fare ciò in Python o Java, è necessario specificare allowed_client_ids
o audiences
nell'annotazione/decoratore sull'API e/o sui metodi. Vedi lo docs per maggiori informazioni.
Python:
Se si desidera ottenere un utente in Python, chiamare
endpoints.get_current_user()
dall'interno di una richiesta che è stato annotato con allowed_client_ids
o audiences
. Se restituisce None
, non esiste un utente valido (e si dovrebbe restituire un 401).
Java:
Per avere un utente, su un metodo annotato (o metodo di cui un'API annotato), semplicemente specificare un oggetto utente nella richiesta:
import com.google.appengine.api.users.User;
...
public Model insert(Model model, User user) throws
OAuthRequestException, IOException {
e come in Python, verificare se user
è null
per determinare se un token OAuth 2.0 valido è stato inviato con la richiesta.
Grazie @Shay! Scusa la mia ignoranza, ma quando dici "ricerca chiave" intendi usare direttamente "getObjectById" invece di una query, giusto? E che cos'è NDB? – MikO
Quindi sei un ragazzo Java, NDB è per Python. –
E sì: la ricerca dei tasti utilizza getObjectById –