모든 개발자를 위한 HTTP 웹 기본 지식 (김영한) 강의 수강 후 정리한 자료입니다.

❗HTTP 메서드를 활용해보자❗

✨ 클라이언트에서 서버로 데이터 전송

데이터 전달 방식

  1. 쿼리 파라미터를 통한 데이터 전송
    -> cf) 쿼리 파라미터란? “?”를 사용해서 URL 내 나타내는 것. 예를 들어 /search? age=21 등이 있다.
    -> GET
    -> 주로 정렬 필터 (검색어)
  2. 메시지 바디를 통한 데이터 전송
    -> POST, PUT, PATCH
    -> 회원 가입, 상품 주문, 리소스 등록, 리소스 변경

1. 정적 데이터 조회

  • 쿼리 파라미터 미사용
  • 이미지, 정적 텍스트 문서

2. 동적 데이터 조회

  • 쿼리 파라미터 사용
  • 검색, 게시판 목록에서 정렬 필터 (검색어)
    -> 서버에서 찾아서 각자에 맞는 데이터를 뿌려 줘야 함.

3. HTML Form을 통한 데이터 전송

  • 회원 가입, 상품 주문, 데이터 변경

form 태그를 사용한 경우 (application/x-www-form-urlencoded)

  • 전송 데이터를 url encoding 처리
  • GET, POST만 가능
  • POST면 메시지 바디에 쿼리 파라미터로 바꿔 넣고, GET이면 URL에 쿼리 파라미터로 바꿔 추가한다.
  • URL이 달라지기 때문에 원하는 값이 나오지 않을 수도 있다. 그러므로 form 태그에는 가급적 POST를 사용하자. (GET은 조회 시에만 사용)

multipart/form-data를 사용한 경우

  • 메시지 바디에 여러 개의 파일들을 넣어 보냄.
  • 동영상, 텍스트 파일 등 종류가 다른 파일들을 한 번에 보낼 때 사용할 수 있다.

4. HTTP API를 통한 데이터 전송

  • 회원 가입, 상품 주문, 데이터 변경
  • 서버 to 서버, 앱 클라이언트, 웹 클라이언트(Ajax)
  • 직접 메시지를 만들어 전송
  • POST, PUT, PATCH : 메시지 바디를 통해 데이터 전송

✨ HTTP API 설계 예시

컬렉션

  • 서버가 관리하는 리소스 디렉토리
    ex) /members
  • 클라이언트가 리소스 URI를 모르는 경우
  • 서버가 리소스 URI를 관리 및 담당한다.
  • POST를 사용해 자원을 등록함.
  • POST 요청을 보내면 서버에서 알아서 리소스 URI를 생성하고 보낸다.

스토어

  • 스토어 : 클라이언트가 관리하는 리소스 저장소
  • 클라이언트가 리소스의 URI를 알고 관리
    ex) /files/200
  • 신규 자원을 등록할 때, 클라이언트가 리소스 URI를 알고 있는 경우
  • PUT을 사용해 자원을 등록함. (클라이언트가 URI를 알고, 직접 지정함.)
  • 신규 등록할 때 PUT은 거의 사용하지 않음.

HTML FORM

  • GET, POST만 지원
  • 이런 제약을 해결하기 위해 컨트롤 URI 사용
    cf) 컨트롤 URI : 동사로 된 리소스 경로
    ex) /new, /edit, /delete
  • HTTP 메서드로 해결하기 애매한 경우 사용

정리

  • HTTP API - 컬렉션
  • HTTP API - 스토어
  • HTML FORM
    -> 순수 HTML + HTML form 사용

URI 설계 개념

  • 문서(document)
    • 단일 개념(파일 하나, 객체 인스턴스, 데이터베이스 row) ex) /members/100
  • 컬렉션 ex) members
  • 스토어 ex) /files
  • 컨트롤러, 컨트롤 URI
    • 문서, 컬렉션, 스토어로 해결하기 어려운 추가 프로세스 실행
    • 동사를 직접 사용 ex) members/{id}/delete

카테고리:

업데이트: