[네트워크] 데이터 전송 상황, API 타입

EMMA·2022년 2월 4일
0
post-custom-banner

데이터 전송 상황 및 방식(http 메서드 활용)

결국 http메서드를 사용해서 클라이언트 - 서버가 통신하는 것은 데이터를 주고받기 위함이다. 데이터를 주고 받는 내용은 크게 4가지로 정리되고, 각 상황에 따라 전달되는 http 메서드 및 내용이 달라진다.

  • 정적 데이터 조회
    : get을 통해 이미지 파일/정적인 텍스트 문서 등을 조회
  • 동적 데이터 조회
    : get이나 query parameter를 통해 검색 or 게시판에서 정렬 필터
  • html form을 통한 데이터 전송
    : post,put,patch 등을 통해 회원가입, 상품 주문 등 처리
    : 쉽게 생각하자면 쇼핑몰 회원가입 창
    : form 에서 데이터를 입력하고 (http 메서드: post) submit을 누르면 > http 메세지가 서버로 전송됨
    : 이 때 content-type은 application/x-www.form-urlencoded (세부 데이터는 query parameter 형식, e.g. username=kim&age=20)
    : 만약 파일 등을 같이 전송하는 경우, content-type은 multipart/form-data;boundary=—-XXX 이고 메세지 바디에 각 데이터가 ——XXX로 구분됨 (multipart라고 쓰여져 있는 것 자체가 html form 데이터와 다른 종류의 파일이 같이 존재한다는 뜻)
  • html api를 통한 데이터 전송
    : 회원가입, 상품주문, 서버 to 서버, 앱/웹 클라이언트 등
    : html form 대신 자바스크립트 등을 통한 통신
    : content-type:application/json 을 주로 사용

JSON
: JavaScript Object Notation
: 데이터를 교환하기 위해 데이터 객체를 속성 · 값의 쌍 형태로 표현하는 형식/포맷으로, http메세지에서 body가 주로 택하는 포맷이다
:(220312 update)Introduction of JSON, https://www.json.org/json-en.html
:(220314 update)JSON-wikipedia,https://ko.wikipedia.org/wiki/JSON

http api 설계 타입

http api 설계 유형은 크게 3가지로 나뉜다.
  • collection (대부분 사용되는 타입)
    : 서버가 관리하는 리소스 디렉토리 (uri 생성 및 관리), server-managed directory
    : 때문에 클라이언트는 리소스가 어떤 디렉토리로 등록될지 모름
    : 대표적인 예가 회원 관리 시스템

    http 메세지: POST/members --> 서버는 Location: /members/100 로 응답

    : post 기반, directory는 복수형(plural)으로 작성하는 것이 원칙 (e.g. /members)
    (post 메서드는 리소스 uri를 지정하지 않기 때문에 당연한 흐름)

  • store
    : 클라이언트가 관리하는 리소스 디렉토리, client-managed directory
    : 때문에 클라이언트는 처음부터 리소스의 uri를 알고 있고 http 메세지를 보낼 때 uri를 지정해서 보냄
    : 대표적인 예는 원격 파일 관리 시스템

    http 메세지: PUT/files/star.jpg 를 서버로 전송

    : put 기반, directory는 마찬가지로 복수형으로 작성함 (e.g. /files)
    (put 메서드는 리소스 uri를 처음부터 지정하며 이것이 post와 가장 큰 차이점)

  • html form
    : html form은 get,post만 지원하다보니, 자연스럽게 post 메서드 사용 시 컨트롤 uri가 추가로 사용됨
    : 그래야 등록/수정/삭제 등의 구체적인 프로세스를 실행할 수 있음

    example 1) /members/new, 회원등록 폼 열기(GET), 회원 등록 (POST)
    example 2) /members/{id}/edit, 수정폼 열기(GET), 수정하기 (POST)
    example 3) /members/{id}/delete, 삭제(POST)


내용 출처: 모든 개발자를 위한 HTTP웹 기본 지식, 김영한
profile
예비 개발자의 기술 블로그 | explore, explore and explore
post-custom-banner

0개의 댓글