Next-Squad/Interview-Question

[NETWORK] 16. HTTP METHOD 종류에 대해서 설명해주세요.

jeremy0405 opened this issue · 1 comments

HTTP METHOD 종류에 대해서 설명해주세요.

키워드

리소스 행위 구분, 안전, 멱등, 캐시

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 메서드 특징

image

HTTP 메서드 속성

  • 안전
    • 호출 해도 리소스를 변경하지 않음
  • 멱등
    • 여러 번 호출해도 결과가 같음
  • 캐시가능
    • 응답 결과(리소스)를 캐시해서 사용해도 되는지?
    • POST, PATCH를 캐싱하기에는 현실적으로 어려움이 많음

참고자료