URI는 리소스만 식별
리소스와 해당 리소스를 대상하는 행위는 분리
행위는 어떻게 구분? -> HTTP 메서드를 사용
GET -> 조회
POST -> 요청 데이터 처리, 주로 등록에 사용
PUT -> 리소스를 대체, 해당 리소스가 없으면 생성
PATCH -> 리소스 부분 변경
DELETE -> 리소스 삭제
리소스 조회
서버에 전달하고 싶은 데이터는 query 파라미터로 전달
메세지 바디를 통해서 보낼 수는 있지만 권장 X
메세지 바디를 통해 서버로 요청 데이터 전달
서버는 요청 데이터를 처리
메세지 바디를 통해 들어온 데이터를 처리하는 모든 기능을 수행한다.
주로 전달된 데이터로 신규등록등에 사용
신규로 생성될 경우 201 리턴
POST의 결과로 새로운 리소스가 생성되지않더라도 요청 데이터를 처리하는 경우에는 POST 사용
리소스를 대체
-> 리소스가 있으면 대체 (완전히대체)
-> 없으면 생성
-> 쉽게 이야기해서 덮어버림
중요! 클라이언트가 리소스를 식별
-> 클라이언트가 리소스 위치를 알고 URI 지정
-> POST과의 차이점
POST에서는 /members로 위치는 모르고 요청을 보내지만 PUT은 /members/100처럼 리소스의 위치를 정확히 알고 URI을 지정한다.
주의점
리소스를 완전히 대체한다.
리소스를 부분적으로만 변경할때는 PATCH 사용
리소스 제거시
PATCH 못쓸경우 POST사용하면 된다.
• 안전(Safe Methods)
• 멱등(Idempotent Methods)
• 캐시가능(Cacheable Methods)

호출하여도 리소스가 변하지 않는다.
ex) GET
POST,DELETE, PUT 등등 리소스 변경되는 것들은 안전하지않음
한 번 호출하든 여러번 호출하든 결과가 똑같다.
ex) get, put, delete


응답 결과를 리소스를 캐시해서 사용해도 되는가?
GET, HEAD, POST,PATCH 캐시가능
실제로를 GET, HEAD정도만 캐시로 사용 가능