2013-08-28 2 views
7

PUT 또는 POST 중 어떤 Http 메서드를 사용해야하는지 결정하려고합니다.RESTful 웹 서비스에서 PUT 메소드 멱등 원이 의미하는 것은 무엇입니까?

StackOverlflow에서 일부 게시물을 보면서 나는 this 게시물을 볼 수있었습니다. 게시물에 대한 답변의

하나는

PUT는 나무 등입니다, 그래서 당신은 두 번 객체를 넣으면, 그것은 아무런 효과가 없다고 말합니다. 이것은 훌륭한 속성이므로 가능한 경우 PUT을 사용합니다.

예제를 통해 나를 도와 줄 수 있습니까? 내가 RDBMS에서 Student 테이블에 항목이 전달 될 학생을 생성하려고하는 시나리오가 있다고 가정 해 보겠습니다.

그래서 여기에 몇 번이나 항목을 넣으려고해도 영향이 없을까요?

답변

7

PUT에서 모두으로 설정하면 PUT이 완료되면 리소스의 상태를 정확히 알 수 있습니다. 일주일 간 기다렸다가 PUT에 다시 전화를 걸면 여전히 상태가 정확히 무엇인지 알 수 있습니다.

POST는 대조적으로 이 아닙니다. 멱등 원 - 값의 하위 집합 만 POST합니다. 따라서 오늘 POST를 호출하고 일주일 동안 기다렸다가 같은 POST 호출을 다시하면 자원의 상태를 알 수 없습니다. 누군가 POST에서 설정하지 않은 값을 변경했을 수 있습니다.

멱등 원 (Idempotent)은 언제 또는 얼마나 자주 전화를 걸든지 자원의 끝 상태가 정확히 동일 함을 의미합니다.

DELETE 및 GET도 멱등수입니다.

+0

내가 이해하지 못하는 한 가지는 idem-potency가 Http 서버에 의해 달성되는 것입니까? 나는 PUT 및 POST로 Strudent를 만들려고 노력할 수 있습니다. 따라서 Student를 작성하는 동안 PUT 또는 POST 요청이 발생한 횟수만큼 Student를 만들 수 있습니다. – Sam

+1

@Sam 서버의 코드가 PUT의 멱수 속성을 적용하는지 확인해야합니다. 마지막 문장을 이해하지 못합니다. Idempotence에 대한 자세한 내용은 다음과 같습니다. http://stackoverflow.com/questions/7016785/is-put-delete-idempotent-with-rest-automatic –

+1

나는 idem-potency가 보장되는지 확인해야합니다. 그렇다면 PUT 또는 POST는 단지 용어 일뿐입니다. 나는 PUT을 통해 학생을 만들려고 노력할 것이고 POST와 마찬가지로 할 것입니다. 따라서 PUT을 사용하지 않으면 학생이 3 번 생성됩니까? 이것은 내가 마지막 문장을 의미하는 것입니다. – Sam