2017-05-20 2 views
0

Android 클라이언트 용 표준 Google App Engine 백엔드 응용 프로그램을 개발했습니다. 이제 앱에 검색 기능이 있으며 한 요청 동안 20 개의 결과를 반환 할 계획이지만 고급 (예 : 100)으로 검색하면 다음 히트 곡을 검색하고 반환합니다. 그래서, 나는 80 명의 레코드를 저장하는 메커니즘을 필요로하므로 같은 사용자가 레코드를 빨리 가져올 수 있습니다.Google App Engine : 클라우드 엔드 포인트 내부에서 세션에 액세스하려면 어떻게해야합니까?

나는 그것을 검색하고 우리가 appengine-web.xml에서 세션을 활성화 할 수 있지만, 내 코드는 전적으로 구글의 클라우드 엔드 포인트 동안 모든 세션 액세스 doPost()doGet()에서 수행 된 것을 발견했다.

은 또 다른 한가지는 (봄처럼) Datastore과 일부 캐시 (예 : Memcache) 내에서 데이터를 유지하고 싶습니다.

내 최종 목표는이 데이터를 검색 세션에 저장하는 것입니다. 이 작업을 수행 할 수있는 메커니즘이 있습니까?

답변

0

일반적인 접근 방식은 사용자가 다음 결과에서 동일한 결과를 계속 볼 수 있도록 요청에 보낼 수있는 코드 값을 응답에 제공하는 것입니다. 이를 "커서"라고합니다.

예를 들어 캐시에 임의의 키로 80 개의 레코드를 저장 한 다음 해당 응답의 일부로 임의의 키를 사용자에게 보낼 수 있습니다. 그런 다음 사용자가 키를 포함하여 새 요청을하면 레코드 만 반환합니다.

쿠키 기반 세션은 일반적으로 API와 제대로 작동하지 않습니다. 그들은 불필요한 statefulness를 소개합니다.

+0

견고한 접근법 (서블릿과 gae 세션 (파이썬)이라고 불리는 lib와 함께 GAE로 촬영 한)은 Memcache와 Datastore를 사용하여 조회를 수행합니다. 자바에는 단일 lib 디렉토리가 없습니다. 나는 나 자신을 쓰려고 생각하고 있었다. 캐시에만 의존하면 갑자기 꺼지면 데이터가 손실 될 수 있습니다. –

+0

커서가 실제로 가리키는 것은 당신에게 달렸습니다. 내 요점은 당신이 세션 대신 커서를 사용해야한다는 것입니다. –

관련 문제