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));
}

더 알아보기 (Learn more)