Flèche
[http] put과 post/http헤더와 바디_get방식과 post방식 본문
PUT
post와 가장 큰차이는 put 메서드는 자원의 식별자를 이미 알고있는 상태여야한다는 점이다. put 메서드는 식별자의 자원을 http 메세지로
함께 넘어온 엔티티로 교체한다. put 메서드로 넘어온 식별자가 꼭 존재하고있는 식별자일 필요는 없다. 존재하지않는 식별자를
넘길수도있는데 이런 경우엔 넘어온 식별자를 id로 하는 새 자원을 생성하고 201(created) 응답을 한다.
식별자를 id로 사용할수없는 경우엔 에러코드로 응답한다.
차이
새 자원을 생성한다는 점에서 POST랑 같다. POST와 PUT의 가장 큰 차이는 POST는 request message로 포함된 엔티티를 이용해 새로운 자원을 생성해 내는것이고, PUT은 request message와 함께 넘어온 식별자의 자원을 만드는것이다. 음 말이 좀 이해하기 어려운데 똑같은 요청이 POST로 2번 날아오면 POST는 2개의 자원을 생성한다. 게시판에 글쓰기 요청을 2번 날리면 2개의 게시물이 등록되는것이다. PUT으로 동일한 요청을 2번 날린다고 생각해보자. 이때 PUT은 식별자를 포함해야한다. 다만 꼭 존재하는 식별자를 포함할 필요는 없으므로 존재하지않는 식별자로 요청을 하게되면 이때는 POST와 동일하게 자원을 생성한다. 하지만 두번째 요청에선 이미 첫번째 요청에서 생성된 자원이 있으므로 자원을 생성하지않고 교체하게된다. 이 부분이 POST와 PUT이 달라지게된다.
출처: https://multifrontgarden.tistory.com/245 [우리집앞마당]
'spring' 카테고리의 다른 글
[테스트코드] getForEntity getForObject (0) | 2021.03.09 |
---|---|
[테스트코드]httpentity, testresttemplate.exchange (0) | 2021.03.08 |
[http]testresttemplate -> http get,post -> header body (0) | 2021.03.05 |
[spring] 그레이들 버전 update, gradle5부터 lombok 설정 (0) | 2021.03.03 |
[spring]MemoryMemberRepository 와 SpringDataJpaMemberRepository 의 차이점 (0) | 2021.02.28 |