[웹-네트워크]HTTP 메서드

정예인·2022년 11월 8일
0

Web_Network

목록 보기
2/2

리소스

  • ex) 미네랄을 캐라 -> 미네랄이 리소스

  • 회원이라는 개념 자체가 리소스

  • 리소스 식별법
    - 회원 등록, 수정, 조회하는 것 모두 배제

    • 회원이라는 리소스만 식별 -> URI 매핑

HTTP 메서드

- GET, POST, PUT, PATCH, DELETE

  • GET : 리소스 조회
  • POST : 요청 데이터 처리, 주로 등록에 사용
  • PUT : 리소스 대체, 해당 리소스가 없으면 생성
  • PATCH : 리소스 부분 변경
  • DELETE : 리소스 삭제

' 최근에는 Representation으로 바뀜

  • 기타 메서드
    - HEAD : 상태 줄과 헤더만 반환
    • OPTITONS
    • CONNECT

GET

  • 리소스 조회
  • 서버에 전달하고 싶은 데이터느 query를 통해서 전달

POST

  • 요청 데이터 처리
    - 주문 결제완료 ->(배달 시작 요청은 POST) 배달시작 -> 배달완료
    • 프로세스 진행에 사용
  • 클라이언트에서 서버로 요청을 보낼 때, 서버 받아서 요청 데이터 처리
    - 메시지 바디를 통해 들어온 데이터 처리
  • 주로 전달된 데이터로 신규 리소스 등록
    ( 주로 등록에 많이 사용 )
  • JSON으로 조회데이터를 넘겨야 하는데 GET 메서드 사용하기 어려운 경우 POST 사용
  • POST는 모든걸 할 수 있다. but 조회할때는 GET을 쓰는게 유리

POST는 요청 데이터를 어떻게 처리한다는 뜻인가?

  • 대상 리소스가 리소스의 고유 한 의미 체계에 따라 요청에 포함 된 표현을 처리하도록 요청
  • HTML FROM에서 회원가입, 주문 등 사용
  • 게시판 글 , 뉴스, 그룹, 메일링 등
  • 서버가 식별하지 않은 새 리소스 생성
  • 기존 자원에 데이터 추가

PUT

  • 리소스 대체
    - 리소스가 있으면 대체
    - 리소스가 없으면 생성
    • 쉽게 이야기해서 덮어버림
  • 클라이언트가 리소스 식별
    - 클라이언트가 리소스 위치 알고 URI 지정
    • POST와 차이점

PATCH

  • PATCH 로 보내게 되면 age만 50으로 변경
  • 리소스를 부분적으로 바꾸고 싶을때 사용
  • PATCH가 지원이 안 되는 서버일 경우, POST를 하면 된다. ( 요즘에는 대부분 지원 )

DELETE

  • 리소스 제거

HTTP 메서드의 속성

안전

  • 호출해도 리소스 변경 x
  • GET,HEAD 안전
  • POST,DELETE 안전 x

멱등(Idempotent)

  • 한 번 호출하든 두 번 호출하든 결과가 똑같다.

  • PUT, GET, DELETE, POST(멱등아님)
    - GET : 조회는 언제해도 결과가 같다.

    • PUT : 결과를 대체한다. 요청을 여러번 해도 최종 결과는 같다.
    • DELETE : 결과 삭제 , 여러번 해도 삭제되는 것은 같다
    • POST : 멱등이 아님!!!!! 두번 결제하면 중복결제됨
  • 자동 복구 메커니즘 (DELETE 했는데 서버에 응답이 없을때, ( 재요청 가능 - 결과는 같기에 ) 자동복구 메커니즘 사용 가능 )

  • but 재요청 중간에 다른 곳에서 리소스 변경해버리면?
    - 사용자 1 GET: username A age 20

    • 사용자 2 PUT: username A age 30
    • 사용자 1 GET: username A age 30
      중간에 리소스가 변경되는 것을 멱등은 고려 x -> 해당 상황은 멱등하지 x

캐시가능

  • 응답 결과를 캐시해서 사용해도 되는가?
  • GET, HEAD, POST, PATCH 캐시 가능
  • 실제로는 GET, HEAD 정도만 캐시로 가능
    - POST, PATCH는 본문 내용까지 캐시 키로 고려해야 하는데, 구현이 쉽지않음
profile
hello velog :)

0개의 댓글