Capabilities API를 사용하면 애플리케이션이 특정 API 기능의 서비스 중단 및 예정된 다운타임을 감지할 수 있습니다. 이 API를 사용하면 특정 기능을 사용할 수 없을 때 이를 감지하고 해당 기능을 우회하여 애플리케이션의 다운타임을 줄일 수 있습니다. .
예를 들어 Images API를 사용하여 이미지 크기를 조정할 때, Capabilities API를 사용하면 Images API를 사용할 수 없을 때 이를 감지하여 크기 조정을 건너뛸 수 있습니다.
import com.google.appengine.api.capabilities.*;
CapabilitiesService service =
    CapabilitiesServiceFactory.getCapabilitiesService();
CapabilityStatus status = service.getStatus(Capability.IMAGES).getStatus();
if (status == CapabilityStatus.DISABLED) {
    // Images API is not available.
}
Datastore 읽기 및 쓰기 가능 여부도 별도로 쿼리할 수 있습니다. 다음 샘플은 Datastore 쓰기 가능 여부를 감지하는 방법을 보여주고, 다운타임 중 사용자에게 메시지를 제공합니다.
CapabilityStatus status =
    service.getStatus(Capability.DATASTORE_WRITE).getStatus();
if (status == CapabilityStatus.DISABLED) {
    // Datastore is in read-only mode.
}
자바 8에서 Capabilities API 사용
각 Capability는 Capability 클래스에서 정적 상수로 표시됩니다(예: Capability.DATASTORE_WRITE).
각 기능에는 CapabilitiesService.getStatus(Capability)에서 검색 가능한 상태가 포함되어 있습니다.
각 상태는 특정 기능의 가용성을 나타내는 열거형 값인 ENABLED 또는 DISABLED를 포함합니다. 이 API에서 현재 사용 설정된 서비스 목록은 아래를 참조하세요.
지원되는 기능
이 API에서 현재 지원되는 기능은 다음과 같습니다.
| 기능 | getStatus에 대한 인수 | 
|---|---|
| blobstore 사용 가능 여부 | Capability.BLOBSTORE | 
| Datastore 읽기 | Capability.DATASTORE | 
| Datastore 쓰기 | Capability.DATASTORE_WRITE | 
| 이미지 서비스 사용 가능 여부 | Capability.IMAGES | 
| 메일 서비스 사용 가능 여부 | Capability.MAIL | 
| Memcache 서비스 사용 가능 여부 | Capability.MEMCACHE | 
| 태스크 큐 서비스 사용 가능 여부 | Capability.TASKQUEUE | 
| URL Fetch 서비스 사용 가능 여부 | Capability.URL_FETCH |