wyświetlanie obrazu blobstore za pośrednictwem api punktów końcowych app-engine

Buduję punkt końcowy api silnika aplikacji, który wykonuje zdjęcie od użytkownika (aplikacja na Androida) i zapisuje go programowo w blobstore. Następnie zapisuję blob_key w moim magazynie danych. Kod wygląda następująco:

Najpierw otrzymałem obraz przez moje@endpoint.method jakmessages.BytesField:

image_data = messages.BytesField (1, required = True)

Potem zapisuję do blobstore w ten sposób:

from google.appengine.api import files

def save_image(data):
  # Create the file
  file_name = files.blobstore.create(mime_type='image/png')

  # Open the file and write to it
  with files.open(file_name, 'a') as f:
    f.write('data')

  # Finalize the file. Do this before attempting to read it.
  files.finalize(file_name)

  # Get the file's blob key
  blob_key = files.blobstore.get_blob_key(file_name)
  return blob_key # which is then saved to datastore

Teraz chcę odesłać obraz. Nie widzę, jak dopasować następujący kod do moich punktów końcowych api:

from google.appengine.ext import blobstore
from google.appengine.ext.webapp import blobstore_handlers
class ServeHandler(blobstore_handlers.BlobstoreDownloadHandler):
  def get(self, resource):
    resource = str(urllib.unquote(resource))
    blob_info = blobstore.BlobInfo.get(resource)
    self.send_blob(blob_info)

W końcu wyobrażam sobie taką procedurę serwowania:

w @ endpoints.method:

pobierz blob_key z magazynu danych

uzyskaj obraz za pomocą blob_key

dodaj obraz do StuffResponseMessage

wyślij StuffResponseMessage na front-end (aplikacja na Androida)

Moje podejście polega na tym, że chcę chronić prywatność moich użytkowników. Jakieś przemyślenia, jak to zrobić dobrze?Moje fragmenty kodu pochodzą zazwyczaj z samouczka programisty Google.

EDYTOWAĆ:

Nie widzę, jak przekazałbym blob_key z magazynu danych do następującej metody pobierania obrazu:

from google.appengine.ext import blobstore
from google.appengine.ext.webapp import blobstore_handlers
class ServeHandler(blobstore_handlers.BlobstoreDownloadHandler):
  def get(self, resource):
    resource = str(urllib.unquote(resource))
    blob_info = blobstore.BlobInfo.get(resource)
    self.send_blob(blob_info)

Co jest w środkuresource, tak czy inaczej?

questionAnswers(1)

yourAnswerToTheQuestion