API가 수용하는 값 보내기
API가 수용하는 값 보내기
생략된 값과 명시적 false나 0을 혼동하지 않도록 SDK 옵션을 만들어요. 기본값을 서비스가 정하는 설정에서는 이 점이 중요해요. 인증된 클라이언트로 시작해요. SDK가 내보낸 옵션 타입을 사용해서 편집기에 지원되는 입력이 표시되게 해요.
출처: 문서
본문
생성 옵션 구성하기
이미지 소스와 수명주기 설정을 제공하되, SDK가 요구하는 기간(duration) 단위를 사용해요. 예시는 초(second)를 받아 경계에서 변환해요. 이 예시는 관리형(managed) 이미지를 사용하므로 리소스 기본값을 스스로 공급해요. 레지스트리 이미지를 사용한다면 image-reference 옵션을 쓰고 지원되는 CPU·메모리 쌍을 제공해요. 선택적 불리언은 서비스 기본값을 원할 때 그 부재(absence)를 보존해요. 명시적 false는 선택이지 누락된 값이 아니에요. 요청을 만들기 전에 사용자가 준 값을 검증해요.
return {
displayName: name,
image,
platform,
lifecycle: {
timeoutMs: lifeSeconds * 1_000,
autoResume,
},
};
완전한 TypeScript 예시: values/build.ts
import type { ClientCreateOptions, Sandboxes } from '@docker/sandboxes';
export function createRequest(
name: string,
image: string,
lifeSeconds: number,
platform: ClientCreateOptions['platform'],
autoResume: boolean | undefined,
): ClientCreateOptions {
return {
displayName: name,
image,
platform,
lifecycle: {
timeoutMs: lifeSeconds * 1_000,
autoResume,
},
};
}
export async function sendCreate(client: Sandboxes, request: ClientCreateOptions) {
const sandbox = await client.create(request, { timeoutMs: 300_000 });
return sandbox.waitUntilRunning();
}
실제 적용 값을 읽기
샌드박스를 얻어 보고된 플랫폼, 리소스, 만료 시각을 검사해요. 이것들은 서비스가 기록한 값을 설명하는데, 생략되거나 기본 처리된 입력 값과 다를 수 있어요. 언어의 네이티브 숫자·기간 표현을 유지해요. 큰 정수를 표시하거나 직렬화하기 위해 부동소수점 타입으로 변환하는 건 피해요.
return {
expiresAt: sandbox.effectiveFeatures?.timeouts?.expiresAt,
platform: sandbox.core.platform,
cpus: sandbox.core.resources?.cpus ?? undefined,
};
완전한 TypeScript 예시: values/read.ts
import type { Sandbox, Sandboxes } from '@docker/sandboxes';
export function reportedValues(sandbox: Sandbox) {
return {
expiresAt: sandbox.effectiveFeatures?.timeouts?.expiresAt,
platform: sandbox.core.platform,
cpus: sandbox.core.resources?.cpus ?? undefined,
};
}
export async function readSandbox(client: Sandboxes, name: string) {
return reportedValues(await client.get(name));
}