отображение изображения из магазина через конечные точки API-приложений
Я создаю API-интерфейс конечной точки ядра приложения, который берет изображение от пользователя (приложение для Android) и сохраняет его в хранилище программным способом. Затем я сохраняю blob_key в моем хранилище данных. Код выглядит так:
Сначала я получил изображение через мой@endpoint.method
какmessages.BytesField
:
image_data = messages.BytesField (1, обязательно = True)
Затем я сохраняю в магазине, как это:
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
Теперь я хочу вернуть изображение обратно. Я не вижу, как вписать следующий код в мои конечные точки 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)
В конце я представляю себе процедуру подачи:
в @ endpoints.method:
получить blob_key из хранилища данных
получить изображение с помощью blob_key
добавить изображение в StuffResponseMessage
отправить StuffResponseMessage на передний план (приложение для Android)
Мой подход заключается в том, что я хочу защитить конфиденциальность своих пользователей. Есть мысли о том, как сделать это хорошо?Мои фрагменты кода, как правило, взяты из учебника Google для разработчиков..
РЕДАКТИРОВАТЬ:
Я не понимаю, как передать blob_key из хранилища данных следующему методу для получения изображения:
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)
Что внутриresource
, так или иначе?