Google App Engine可用于"检查更新"并下载二进制文件Web服务吗?

Tof*_*zer 2 iphone google-app-engine

我是Google App Engine的新手,非常感谢任何帮助.我有一个iPhone应用程序,它从设备上的sqlite db存储localling中获取数据.

我想建立一个我的iPhone客户端将与之交谈的Google App Engine网络服务,并检查是否有需要下载的更新版本的sqlite数据库.

因此,iPhone客户端使用某种版本号/时间戳来访问Web服务,如果有更新的文件,App Engine将通知客户端,然后客户端将请求新数据库下载App Engine将提供的服务.

是否可以在Google App Engine中设置Web服务来执行此操作?有人能指点我的任何示例代码/教程吗?

非常感谢

Dre*_*ars 5

我要做的是将SQLite DB保存为数据存储区中的gzip压缩包.使用SHA1哈希作为etag.客户端使用etag标头执行GET请求,服务器响应304 Not Modified或200以及响应正文中的blob内容.

有专门针对blob的API,称为Blobstore API,但要使用它,您需要启用计费.如果不启用计费,您仍然可以轻松地提供blob服务,但每个请求,响应和实体大小限制为10MB.如果您的压缩数据库大于此数据库,您可以将下载分解为多个请求,因为您可以控制客户端和服务器代码.仅使用数据存储区的自定义blob处理程序可能如下所示:

class MyModel(db.Model):
  body = db.BlobProperty()

class MyBlobHandler(webapp.RequestHandler):
  def get(self):
    entity_key = self.request.get("entity_key")
    entity = MyModel.get(entity_key)
    self.response.headers['Content-type'] = 'what/ever'
    self.response.out.write(entity.body)
  def put(self):
    entity = MyModel(body=db.Blob(self.request.body))
    entity.put()
    self.response.out.write(entity.key())
Run Code Online (Sandbox Code Playgroud)