2016-08-30 5 views
0

내 이해에서 PUT을 사용하여 기존 레코드를 삽입하거나 수정할 수 있습니다.HTTP PUT 삽입 및 ID

URL로 PUT을 보내면 클라이언트 정의 URL에 리소스가 전체적으로 생성되거나 바뀝니다.

PUT: www.domain.com/accounts/1 
{ 
    Name: "Some Name" 
} 

다음 요청 ID 1에 계정을 만들 것이지만, 다음 요청에 단순히/업데이트 할 것입니다 그것을 나무 등 수 ID 1로 계정을 대체합니다.

이 작업은 관계형 데이터베이스의 ID 열 또는 자동 생성 ID를 지원하는 다른 데이터베이스와 어떻게 작동합니까?

내 계정에 자동 생성 SQL ID 열이있는 경우 기본 키 이외의 속성을 사용하여 데이터베이스에서 해당 리소스를 식별해야합니까? 아니면 기존 리소스가 아닌 요청에 대해 리소스를 찾을 수 없음 오류를 반환해도 괜찮습니까?

답변

1

먼저 PUT 대신 POST를 사용하여 새 리소스를 만듭니다.

두 번째로 DB 고유 키 식별자를 사용하는 것이 좋습니다. 일부 시나리오에서는 해당 열을 guid로 되돌릴 수 있습니다 (예 : 바우처 시스템을 구현하고 사용자가 바우처 ID를 증분하여 해킹합니다. 바우처 안내 만 표시합니다.

실제 ID에 대해서는 초기 POST 페이로드에서 생략하는 것이 좋습니다. 구현 세부 사항 일 뿐이며 DB는 생성해야하는 유일한 것이며 응답에서 반환됩니다. 그 (그리고 추가) 요청 (들).

+0

예, 그렇게 생각합니다. 그래서 PUT을 엄격하게 업데이트하는 것은 괜찮습니다. 멱등수 일 때만 가능합니까? – Robert

+0

당신은 내가 POST와 관련된 창조 시나리오에 대해서만 설명했습니다; 편집 하나에 대한 필요에 따라 PATCH (대 PUT)를 살펴볼 수도 있습니다. 하지만 그렇습니다. PUT은 멱등수가되어야합니다. –