문서 만들기
새 항목을 만들려면 먼저 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
}