def get(self, *_):

        self.authenticator.authenticate(self)

        if not self.caching:
            self.get_impl()
            return

        # attempt to return cached response
        cached_response = memcache.get(self.request.url)
        if cached_response:
            cached_response = pickle.loads(cached_response)
            # only use cache response if the requests match
            if cached_response.matches_request(self.request):
                if cached_response.is_not_modified(self):
                    self.not_modified()
                cached_response.write_output(self)
                return

        self.get_impl()

        # don't cache blobinfo content requests
        if self.response.disp_cache_resp_:
            cached_response = pickle.dumps(CachedResponse(self))
            if not memcache.set(self.request.url, cached_response,
                                self.cache_time):
                logging.warning("memcache set failed for %s",
                                self.request.url)
Does a REST get, optionally using memcache to cache results.  See
dataset/ETHPy150Open jahlborn/appengine-rest-server/src/main/python/rest/__init__.py/Dispatcher.get