docs: @GET
      public Response getContainers(@PathParam("version") String version,
                                    @HeaderParam(HEADER_ACCEPT) String acceptHeader,
                                    @HeaderParam(HEADER_ACCEPT_ENCODING) String acceptEncoding,
                                    @HeaderParam(EurekaAccept.HTTP_X_EUREKA_ACCEPT) String eurekaAccept,
                                    @Context UriInfo uriInfo,
                                    @Nullable @QueryParam("regions") String regionsStr) {
  
          boolean isRemoteRegionRequested = null != regionsStr && !regionsStr.isEmpty();
          String[] regions = null;
          if (!isRemoteRegionRequested) {
              EurekaMonitors.GET_ALL.increment();
          } else {
              regions = regionsStr.toLowerCase().split(",");
              Arrays.sort(regions); // So we don't have different caches for same regions queried in different order.
              EurekaMonitors.GET_ALL_WITH_REMOTE_REGIONS.increment();
          }
  
          // Check if the server allows the access to the registry. The server can
          // restrict access if it is not
          // ready to serve traffic depending on various reasons.
          if (!registry.shouldAllowAccess(isRemoteRegionRequested)) {
              return Response.status(Status.FORBIDDEN).build();
          }
          CurrentRequestVersion.set(Version.toEnum(version));
          KeyType keyType = Key.KeyType.JSON;
          String returnMediaType = MediaType.APPLICATION_JSON;
          if (acceptHeader == null || !acceptHeader.contains(HEADER_JSON_VALUE)) {
              keyType = Key.KeyType.XML;
              returnMediaType = MediaType.APPLICATION_XML;
          }
  
          Key cacheKey = new Key(Key.EntityType.Application,
                  ResponseCacheImpl.ALL_APPS,
                  keyType, CurrentRequestVersion.get(), EurekaAccept.fromString(eurekaAccept), regions
          );
  
          Response response;
          if (acceptEncoding != null && acceptEncoding.contains(HEADER_GZIP_VALUE)) {
              response = Response.ok(responseCache.getGZIP(cacheKey))
                      .header(HEADER_CONTENT_ENCODING, HEADER_GZIP_VALUE)
                      .header(HEADER_CONTENT_TYPE, returnMediaType)
                      .build();
          } else {
              response = Response.ok(responseCache.get(cacheKey))
                      .build();
          }
          return response;
      }