Home [HTTP] HTTP 메서드
Post
Cancel

[HTTP] HTTP 메서드

  • HTTP 메서드
    • URI 설계에서 가장 중요한 것은 리소스 식별이다.
    • 리소스와 행위를 분리 → 리소스 : 목적어, 행위 : 동사
    • GET : 리소스 조회
    • POST : 요청 데이터 처리, 주로 등록에 사용
    • PUT : 리소스를 대체, 해당 리소스가 없으면 생성
    • PATCH : 리소스 일부 변경
    • DELETE : 리소스 삭제
    • HEAD : GET과 동일하지만 메세지바디 제외 헤더만 요청
    • OPTIONS, CONNECT, TRACE … 생각보다 다양하다
  • GET
    • 서버에 전달하고 싶은 데이터는 쿼리를 통해 전달
    • 메시지 바디를 사용해서 데이터를 전달할 수 있지만, 실무에서는 메시지 바디 사용하지 않음(지원하지 않는 서버가 많다)
    • 조회할 때는 GET 사용하는게 유리, 캐싱이 가능하다. POST는 캐싱이 어려움
  • POST
    • 주로 신규 데이터 등록, 변경된 프로세스 수정에 사용
    • 신규 생성시 응답 데이터 (201 CREATED, Location : path, 등록된 데이터)
    • 사용 예시 : 회원가입, 게시판 글쓰기, 댓글 달기, 신규 주문 생성, 기존 데이터 수정
    • 프로세스를 처리하는 경우에 사용 - 다음 데이터 프로세스를 처리하는 단계에서 사용한다.
    • POST의 결과로 새로운 리소스가 생성되지 않는 경우도 있다.
    • 컨트롤 URI(동사형 URI)를 사용하기도 한다.
    • 다른 메서드로 처리하기 애매한 경우 (GET 메서드에 메시지 바디를 넣고싶은데 서버에서 지원하지 않을 때)
    • 애매하면 POST
  • PUT
    • 생성 혹은 존재한다면 기존 파일 덮어쓰기
    • 클라이언트가 리소스를 지정(식별)한다. - POST와의 차이
    • 데이터 필드가 작성되지않으면 그 데이터 모두 사라짐 → 완전 대체
  • PATCH
    • 리소스 부분 변경
    • 데이터 필드 작성 안 해도 기존의 데이터 필드가 존재하면 유지
    • 지원 안되는 서버일 경우 POST
  • HTTP 메서드 속성
    • 안전 : 호출시 변경발생 안함
    • 멱등(Idempotent) : 한번 호출하든 n번 호출하든 결과가 같다. (Y) GET,PUT,DELETE /(N) POST
    • 멱등 활용하는 이유 : 서버가 오류났을 때, 클라이언트가 같은 요청을 다시 해도 결과가 같길 원할 때
    • 외부요인으로 리소스가 변경될 때 다른 결과값이 나오는 것은 멱등의 판단 기준에 들어가지 않는다.
    • 캐시가능 Cacheable : 실제는 GET(url만 잡으면 됨), HEAD만 캐시 사용 POST, PATCH는 본문 내용까지 캐시키로 고려해야해서 구현 어려움
  • HTTP 메서드 활용
    • 클라이언트에서 서버로 데이터 전송
      • 쿼리 파라미터 → GET, 주로 정렬필터(검색어)
      • 메시지 바디→ POST, PUT, PATCH 회원가입, 상품주문, 리소스 등록, 리소스 변경
      • 상황
        1. 정적데이터 조회- 추가데이터 전달 없음(쿼리 파라미터 없음). URL 경로만 전송, 이미지, 정적 텍스트 문서
        2. 동적 데이터 조회- 데이터 전달함, 쿼리 파라미터에 따라 결과가 동적으로 생성된다. 검색, 게시판 목록 조회 GET
        3. HTML Form을 통한 데이터 전송
          1. POST : Form 태그내부의 input box에 데이터를 입력하면 입력한대로 데이터가 전송됨.(Content-Type : application/x-www-from-urlencoded) POST
          2. GET : Form 태그 내부의 데이터를 쿼리 파라미터로 보냄
          3. enctype = ”multipart/form-data” Content-Type=multipart/form-data;boundary=—XXX, boundary가 각 데이터를 구분함, 주로 파일 업로드에 사용
        4. HTTP API를 통한 데이터 전송
          1. 서버에서 서버로 통신할때 사용, 아이폰, 안드로이드에서 전송할때 주로 사용
          2. Form대신에 자바스크립트를 통한 통신에 사용한다.
          3. POST, PUT, PATCH : 메시지 바디로 데이터 전송
          4. GET : 쿼리 파라미터로 데이터 전송
          5. Content-Type : application/json 을 주로 사용 (사실상 표준)
    • HTTP API 설계 예시
This post is licensed under CC BY 4.0 by the author.

[HTTP] HTTP 기초 지식

[HTTP] HTTP 상태코드

Comments powered by Disqus.