Cloudant 데이터베이스에서 개정판이 정의되지 않은 문서에서 PUT을 호출 할 때 예상되는 동작은 무엇입니까?존재하지 않는 항목에 대해 rev가있는 클라우드 PUT의 예상되는 동작은 무엇입니까?
문서는 말한다 :
업데이트 (또는 생성) 문서, HTTPS에 대한 업데이트 된 JSON 컨텐츠와 (새 문서 작성에 필요하지) 최신 _rev 값과 PUT 요청을하려면 : //$USERNAME.cloudant.com/$DATABASE/$DOCUMENT_ID.
나는 개정판을 제공하면 db가 일치하지 않았 음을 감지하고 요청을 거부한다고 가정했습니다. 내 테스트의 경우 일관성없는 행동을 보입니다. 대부분의 경우 예상되는 409, 문서 업데이트 충돌이 발생합니다. 그러나 때때로 문서 작성이 끝나고 (201) 다음 번 개정이 지정됩니다.
내 테스트는 문서를 만든 다음 해당 리비전을 사용하여 다른 문서를 업데이트하는 것으로 구성됩니다.
- POST에 https : // {URL}/{dB} {_id : "T1"} - 반환 개정
- PUT에 https 저장 : // {URL}/{dB}/T2를 {_rev : 개정이 1-79c389ffdbcfe6c33ced242a13f2b6f2처럼 무언가를 반환하는 경우}
그래서, 다음 PUT이 성공한 경우에, 그것은 (2-76054ab954c0ef41e9b82f732116154b 같은) 다음 버전을 반환합니다. 나는 한 단계로 테스트를 단순화 경우
편집
, 나 또한 다른 결과를 얻을 수 있습니다.
- PUT에 https : // {URL}/{dB}/DoesNotExist {_rev : "1 ffffffffffffffffffffffffffffffff은"}
OK, 올바르게 해석했는지 그리고이 동작이 예상되는지 확인하십시오. "1-ffffffffffffffffffffffffffffff"(POST 생략)와 같은 개정을 사용하여 존재하지 않는 문서에서 PUT을 수행 할 때 테스트를 복잡하게하는 원래의 질문을 호출하면) 문서가 생성되고 다른 시간은 "문서 업데이트 충돌"이 발생합니다. API 사용자는 기대할 수있는 것이 무엇인지, 우리의 호출 코드는 두 가지 경우 모두를 처리 할 수 있어야합니다. – Lin