将servlet架构转换为app-engine端点架构
以下转换是否适用于从Java servlet转换为Google app-engine云端点?
从
public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { … }
至
@ApiMethod(name = "save_blob_key", path = "save_blob_key" httpMethod = HttpMethod.POST) public void saveBlobKey(HttpServletRequest req) throws IOException { … }
背景:
我正在尝试使用端点来处理blobstore回调。
参考: https : //developers.google.com/appengine/docs/java/blobstore/overview#Complete_Sample_App
问题:
这里的大抱怨是以下两行似乎需要类HttpServletRequest
,我不知道是否可以将它传递给端点。
BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService(); Map<String, List> blobs = blobstoreService.getUploads(req);
编辑:
我一直在尝试很多路线来解决这个问题。 我最新的是将blob servlet与端点api结合起来 。 我仍然无法使代码工作。 因此,赏金给任何提供实际导致解决方案的解决方案或信息的人。
您当前无法使用端点作为blobstore blobstoreService.createUploadUrl
的回调。 看到这个相关的答案 。 有一个支持mediaUpload的开放function请求,它可能提供与您想要的function类似的function。 随意给它加星标以显示支持并获得自动更新。
我建议的是两种可能的替代方案之一,具体取决于您尝试上传的数据量。
如果要上载适合数据存储区的少量blob数据,请在Endpoints实体类中使用ShortBlob
(最多500个字节)或Blob
(最多1 MB)类型。 端点将处理后端的序列化,并通过客户端库期望(并发回)base64编码的字符串。 这是一种非常简单,直接的方法。
如果要提供大于1 MB的blob,请立即使用Google Cloud Storage JSON API 。 此API使用与端点相同的客户端库,因此您不必担心将另一个库与应用程序捆绑在一起。 此页面有一个使用Java客户端库将blob插入Google云端存储的示例。