HTTP

HTTP 메서드

keepgoing 2021. 11. 28. 22:42

쿼리 파라미터를 통한 데이터 전송

  • GET, 주로 정렬 필터(검색어)

메시지 바디를 통한 데이터 전송

  • POST, PUT, PATCH
  • 회원가입, 상품 주문, 리소스 등록, 리소스 변경 등

클라이언트에서 서버로 데이터 전송 4가지 상황

  • 정적 데이터 조회(이미지, 정적 텍스트 문서)
  • 동적 데이터 조회(주로 검색, 게시판 목록에서 정렬 필터)
  • HTML FORM을 통한 데이터 전송(POST, GET 방식, 회원 가입, 상품 주문)
  • HTTP API를 통한 데이터 전송(회원 가입, 상품 주문, 데이터 변경, 서버 to 서버, Ajax, JSON)

HTML FORM 데이터 전송

  • 파일 전송(multipart/form-data)

HTTP API 데이터 전송

  • 메시지 바디를 통해서 데이터 전송
  • React, VueJs 같은 웹 클라이언트와 API 통신으로 자주 사용(자바스크립트를 통한 통신에 사용, AJAX)

POST 특징

  • 클라이언트 URI 지정 x, 서버가 자동으로 URI 지정
  • 컬렉션 방식

컬렉션

  • 서버가 관리하는 리소스 디렉토리
  • 서버가 리소스의 URI를 생성하고 관리

PUT 특징

  • 클라이언트가 URI 지정하고 관리까지함
  • 스토어 방식

스토어

  • 클라이언트가 관리하는 리소스 저장소

HTML FORM 사용

  • POST, GET 방식만 지원
  • AJAX 같은 기술을 사용해서 해결 가능
  • 컨트롤 URI 사용

컨트롤 URI

  • HTML FORM 방식 제약을 해소하기 위해 동사로 된 리소스 경로 사용
  • POST의 /new, /edit, /delete가 컨트롤 URI
  • HTTP 메서드로 해결하기 애매한 경우 사용(HTTP API 포함)

문서(Document)

  • 단일 개념(파일 하나, 객체 인스턴스, 데이터베이스 row)
  • 예) /members/100, files/star.jpg

컬렉션(Collection)

  • 서버가 관리하는 리소스 디렉터리
  • 서버가 리소스의 URI를 생성하고 관리
  • 예) POST/members

스토어(store)

  • 클라이언트가 관리하는 자원 저장소
  • 클라이언트가 리소스의 URI를 알고 관리
  • 예) PUT/files

컨트롤러, 컨트롤 URI

  • 문서, 컬렉션, 스토어로 해결하기 어려운 추가 프로세스 실행
  • 동사를 직접 사용
  • 예) /members/{id}/delete
    • Form 형식의 경우 GET, POST만 사용할 수 있어서 컨트롤 URI가 불가피함

validation GET과 POST 같은 URI 사용

  • 서버에 데이터를 보냈는데 문제가 있어 refresh해야할 때, URI가 다르면 깔끔하지 않을 수 있으므로

리소스 위주의 설계

  • ex) 회원이면 members(컬렉션이어서 s붙음), 주문이면 orders,
    • 행위는 GET, POST, PUT, DELETE로 처리
      • ex) 회원 등록 - POST/members/input, 회원 조회GET/members