[NETWORK] 16. HTTP METHOD 종류에 대해서 설명해주세요.
jeremy0405 opened this issue · 1 comments
jeremy0405 commented
HTTP METHOD 종류에 대해서 설명해주세요.
키워드
리소스 행위 구분
, 안전
, 멱등
, 캐시
jeremy0405 commented
URI를 설계 할 때 리소스에 대한 행위를 HTTP Method를 통해 구분한다.
GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS 등의 HTTP Method가 존재한다.
GET
- 리소스 조회
- 서버에 전달하고 싶은 데이터는 query로 전달 (?q=hello&...&..&...)
- 메시지 바디도 쓸 수 있으나 지원하지 않는 서버가 있으므로 쓰지 않는 것을 권장
- 클라이언트가 리소스를 식별함 (/members/100) → 100번째 회원의 정보를 달라는 것
HEAD
- GET과 동일하지만 메시지 부분을 제외하고, 상태 줄과 헤더만 반환
- 서버의 응답에 BODY가 없음
- 웹서버 헬스체크, 버전확인, 최종 수정일자 확인 등의 용도로 사용
POST
- 요청 데이터 처리 (신규 리소스 등록, 프로세스의 큰 변화 시)
- 메시지 바디를 통해 서버로 요청 데이터 전달
- 서버는 요청 데이터를 처리
- 클라이언트가 리소스를 식별하지 않음 (/members)
- POST는 만능으로 다른 기능들을 모두 POST로 대체 가능 (효율적이진 않을수도)
- 이렇게 처리할 때는 RESTFul 한 설계가 아니다.
PUT
- 리소스를 대체 (폴더에 파일을 넣는것과 유사하게 동작)
- 메시지 바디에 적혀있는 대로 무조건 갱신됨
- 클라이언트가 리소스를 식별함 (/members/100) → 100번째 회원의 정보를 대체
PATCH
- 리소스의 내용을 부분 변경
- 메시지 바디에 적힌 부분만이 서버에서 갱신됨
- 클라이언트가 리소스를 식별함 (/members/100) → 100번째 회원의 정보를 부분 변경
DELETE
- 리소스를 삭제
- 클라이언트가 리소스를 식별함 (/members/100) → 100번째 회원의 정보를 삭제
OPTIONS
- CORS에서 preflighted request 에 사용
- 서버에서 지원하는 HTTP Method를 확인하는 용도
HTTP 메서드 특징
HTTP 메서드 속성
- 안전
- 호출 해도 리소스를 변경하지 않음
- 멱등
- 여러 번 호출해도 결과가 같음
- 캐시가능
- 응답 결과(리소스)를 캐시해서 사용해도 되는지?
- POST, PATCH를 캐싱하기에는 현실적으로 어려움이 많음
참고자료