[Network] Retrofit2를 사용하면서 Http에 대해서 궁굼해졌다- GET,POST,PUT,PATCH,DELETE

minH_·2024년 1월 5일

이전 글에 이어서 HTTP 통신 방식에 대해 작성하고자 한다.

GET

말 그대로 얻는다는 뜻이다. 클라이언트가 서버에 리소스를 조회할 때 사용하는 방식이다.

  • 데이터를 헤더(Header)에 담아서 전송한다.
  • URL을 통해 파라미터를 전달한다. 따라서 내가 요청하는 값이 노출이 되기 때문에 민감한 정보를 다룰 때는 사용을 하지 않는 것이 좋다.
  • 캐싱이 가능하다.
  • 데이터 길이에 제한이 있는 경우가 있다.
www.velog.io/@minlove2013/posts?q=network

그러면 위에 적힌 URL을 해석해보자.
post? URL의 끝이다. URL의 끝은 ?마크를 이용하여 나타낸다. URL의 끝에 클라이언트가 요청하는 리소스를 쿼리 스트링 방식으로 전송한다. min의 velog의 posts에서 network가 포함된 제목을 요청한다는 의미이다. 또한 여러가지의 쿼리를 전송할 때에는 &을 사용하여 요청한다.

www.velog.io/@minlove2013/posts?q=network&hl=ko

만약 GET 방식으로 로그인을 했다고 생각해보면 머리가 아프다. (아래의 URL은 예시일 뿐이다.)

www.velog.io/login?id=min&pw=qwerty

..

POST

새 리소스 생성 (등록), 단순히 값 변경을 넘어서 프로세스의 상태가 변경되는 경우에 사용하는 방식이다.(새로운 리소스가 생성이 안될 경우도 있다.)

  • 데이터를 바디(Body)에 담아서 전송한다.
  • URL에 데이터가 노출되지 않는다.
  • 데이터 길이에 제한이 없다.
  • 캐싱이 불가능하다.

음.. 마지막으로 어떤 요청 방식을 사용할지 애매한 경우에도 POST를 사용한다고 한다.

GET과 POST의 차이

위에 특징들을 잘 비교해보면 알 수 있다. 보기 쉽게 정리하려고 한다.

GETPOST
URL 노출 여부OX
데이터
전송 방식
헤더에 담아서 전송바디에 담아서 전송
길이제한제한없음
캐싱불가능가능
멱등성 보장OX

멱등성은 연산을 여러번 적용하더라도 결과가 달라지지 않는 성질 -> 요청을 여러번 보내도 같은 효과

PUT

리소스를 대체하는 요청 방식이다.

  • 리소스가 존재하면 완전히 대체, 없으면 생성 (덮어쓰기)
    - userName: Min, age: 20 데이터를 PUT 을 이용하여 age:25를 전송한 결과는
    age: 25 -> userName이 없어짐. 완전히 대체
  • 클라이언트가 리소스를 식별한다.(POST와의 차이점)

PATCH

리소스를 부분 변경하는 요청 방식이다. 위에 PUT 방식에서 userName이 사라지지 않고 age만 변경된다. PUT과의 차이점을 잘 알자. (완전히 대체 <-> 부분 대체)

DELETE

리소스를 제거하는 요청 방식이다. PUT과 마찬가지로 클라이언트가 리소스 식별.

0개의 댓글