“会话”与谷歌云端点(“Sessions” with Google Cloud Endpoints)

2019-07-22 03:27发布

这个问题只是确认我清楚这个概念。

据我了解, 谷歌云端点是一种谷歌的执行REST的服务,使他们不能保持在内存中的任何“会话”的数据,因此:

  • 用户必须与每个请求发送的验证数据
  • 所有我想在后面使用必须坚持 ,即与我收到的每个API请求中的数据,我要访问数据存储,做一些事情,再存储数据。

它是否正确? 如果是这样,这是在性能方面还算好?

Answer 1:

数据存储是相当快的,特别是如果你做一个键查找(如并列查询)。 如果你使用NDB那么你将有自动的利益memache您的查找。



Answer 2:

是的,你可以使用会话,只放另一Paramether在您的API方法与HttpServlet的:

@ApiMethod
public MyResponse getResponse( HttpServletRequest req, @Named("infoId") String infoId ) {
    // Use 'req' as you would in a servlet, e.g.
    String ipAddress = req.getRemoteAddr();
    ...
}


Answer 3:

是的,您的Cloud Endpoints API后端代码(Java或Python)在App Engine上仍在运行,所以你必须你会在App Engine上的所有资源相同的访问。

虽然你不能设置客户端Cookie的会话,你仍然可以得到数据存储中的请求,并存储用户特定数据的用户。 作为@Shay Erlichmen提到的,如果你对夫妇与数据存储内存缓存和在上下文缓存(如NDB一样),可以使这些查找非常快。

要做到这一点在Python或Java中,无论是allowed_client_idsaudiences将需要在注释/装饰中指定的API和/或方法(一个或多个)。 请参阅文档获取更多信息。

蟒蛇:

如果你想在Python用户,呼叫

endpoints.get_current_user()

从已注释的与请求内allowed_client_idsaudiences 。 如果返回None ,那么就没有有效的用户(你应该返回一个401)。

Java的:

为了得到一个用户,上注解的方法(或包含一个带注释的API中的方法),只需指定在请求中的用户对象:

import com.google.appengine.api.users.User;

...

  public Model insert(Model model, User user) throws
      OAuthRequestException, IOException {

并且作为在Python,检查是否usernull ,如果有效的OAuth 2.0令牌与请求发送到确定。



文章来源: “Sessions” with Google Cloud Endpoints