문서 만들기

완료됨

새 항목을 만들려면 먼저 Product 유형의 C# 코드에서 새 변수를 만들어야 합니다.

Product saddle = new()
{
    id = "027D0B9A-F9D9-4C96-8213-C8546C4AAE71",
    categoryId = "26C74104-40BC-4541-8EF5-9892F7F03D72",
    name = "LL Road Seat/Saddle",
    price = 27.12d,
    tags = new string[] 
    {
        "brown",
        "weathered"
    }
};

container라는 Microsoft.Azure.Cosmos.Container 유형의 변수가 이미 있다고 유추해 보겠습니다.

제네릭 Product 형식 및 새 항목 변수를 생성자에 전달하는 CreateItemAsync <> 메서드를 비동기적으로 호출할 수 있습니다.

await container.CreateItemAsync<Product>(saddle);

이러한 방식으로 이 메서드를 호출하면 새 항목이 만들어지지만 작업 결과에 대한 메타데이터는 없습니다. 또는 작업 결과를 ItemResponse <> 형식의 변수에 저장할 수 있습니다.

ItemResponse<Product> response = await container.CreateItemAsync<Product>(saddle);

HttpStatusCode status = response.StatusCode;
double requestUnits = response.RequestCharge;

Product item = response.Resource;

try-catch 블록을 사용하는 경우 HTTP 상태 코드 값에 대한 StatusCode 속성을 포함하는 CosmosException 형식을 처리할 수 있습니다. 애플리케이션 코드에서 고려해야 할 몇 가지 일반적인 HTTP 상태 코드가 있습니다.

코드 제목 이유
400 잘못된 요청 요청 본문의 항목에 문제가 있습니다.
403 사용할 수 없음 컨테이너가 가득 찼을 가능성이 높습니다.
409 충돌 컨테이너의 항목에 이미 일치하는 ID가 있는 것일 수 있습니다.
413 RequestEntityTooLarge 항목이 최대 엔터티 크기를 초과합니다.
429 TooManyRequests 현재 요청이 컨테이너에 대해 프로비저닝된 최대 RU/s를 초과합니다.

이 예제에서 다음이 수행됩니다.

try
{
    await container.CreateItemAsync<Product>(saddle);
}
catch(CosmosException ex) when (ex.StatusCode == HttpStatusCode.Conflict)
{
    // Add logic to handle conflicting ids
}
catch(CosmosException ex) 
{
    // Add general exception handling logic
}