minghxx.blog
  • [HTTP] HTTP 웹 기본 지식 5) HTTP 메서드 활용
    2023년 11월 02일 09시 32분 46초에 업로드 된 글입니다.
    작성자: 민발자
    728x90

    HTTP 웹 기본 지식

    Session 5 HTTP 메서드 활용

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

    1) 데이터 전달 방식

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

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

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

    POST, PUT, PATCH

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

     

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

    정적 데이터 조회 : 이미지, 정적 텍스트 문서

    동적 데이터 조회 : 주로 검색, 게시판 목록에서 정렬 필터(검색어)

    HTML Form을 통한 데이터 전송 : 회원 가입, 상품 주문,  데이터 변경

    HTTP API를 통한 데이터 전송 : 회원가입, 상품 주문, 데이터 변경, 서버 to 서버, 앱 클라이언트, 웹 클라이언트(AJAX)

     

    2-1) 정적 데이터 조회

    -쿼리 파라미터 미사용

    이미지, 정적 텍스트 문서, 조회는 GET 사용

    정적 데이터는 일반적으로 리소스 경로로 단순하게 조회 가능

    - 쿼리 파라미터 사용

    검색어 같은 추가 조건이 필요한 경우 쿼리 파라미터 사용

    2-2) 동적 데이터 조회

    조회 조건을 줄여주는 필터(검색어), 조회 결과를 정렬하는 정렬 조건에 주로 사용

    조회는 GET 사용, GET은 쿼리 파라미터 사용해서 데이터 전달

     

    2-3) HTML Form 데이터 전송

    - POST 전송 : 저장

    전송 버튼을 누르면 웹 브라우저가 데이터를 읽어서 HTTP 요청 메시지 생성

    메시지 바디에 key-value 형태로 form 데이터를 넣어줌

    서버는 POST 메시지를 받고 데이터를 저장

    - GET 전송 : 저장

    전송 버튼을 누르면 웹 브라우저가 데이터를 읽고 HTTP 요청 메시지 생성

    쿼리 파라미터 key-value 형태로 form 데이터를 넣어줌

    GET은 조회에서만 사용 리소스를 변경하는 곳에 사용하면 안된다 ▶ 회원을 조회하는 검색 필터링 용도로 사용

    - multipart/form-data

    파일 업로드 같은 바이너리 데이터 전송에 사용

    다른 종류의 여러 파일과 폼의 내용 함께 전송 가능

    enctype=""multipart/form-data" form 태그의 전송 버튼을 누르면 웹 브라우저가 form 데이터를 분리하여 데이터를 메시지 바디에 넣어줌

    - 정리

    POST 전송 : application/x-www-urlencoded 사용, form의 데이터를 메시지 바디에 키-값, 쿼리 파라미터 형식으로 전송, 전송 데이터를 url encoding 처리

    GET 전송도 가능

    Content-Type : multipart/form-data : 파일 업로드같은 바이너리 데이터 전송에 사용, 다른 종류의 여러 파일과 폼의 내용 함께 전송 가능

    HTML Form 전송은 GET, POST만 지원

     

    2-4) HTTP API를 통한 데이터 전송

    클라이언트에서 서버로 데이터 바로 전송할 때 HTTP API로 데이터를 전송한다고 함

    서버 to 서버 : 백엔드 시스템 통신

    앱 클라이언트

    웹 클라이언트 : HTML에서 Form 전송 대신 자바 스크립트 통한 통신(AJAX)

    POST, PUT, PATCH : 메시지 바디를 통해 데이터 전송

    GET : 조회, 쿼리 파라미터로 데이터 전달

    Content-Type : application/json 주로 사용

     


    2. HTTP API 설계 예시

    1) HTTP API설계 예시 3가지

    - HTTP API 컬렉션 : POST 기반 등록

    - HTTP API 스토어 : PUT 기반 등록

    - HTML FORM 사용 : 웹 페이지 회원 관리, POST, GET만 지원

     

    2) 회원 관리 시스템 API 설계 POST 기반 등록

    - POST 신규 자원 등록 특징

     클라이언트는 등록될 리소스의 URI를 모른다 ▶ 서버가 새로 등록된 리소스 URI를 생성

    - 컬렉션 Collection

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

     

    3) 파일 관리 시스템 API 설계 PUT 기반 등록

    - PUT 신규 자원 등록 특징

    클라이언트가 리소스 URI를 알고 있어야한다 ▶ 클라이언트가 직접 리소스의 URI 지정

    -스토어 Store

    클라이언트가 관리하는 리소스 저장소, 클라이언트가 리소스의 URI를 알고 관리

     

    4) HTML FORM 사용

    GET, POST만 지원(ajax 기술을 사용해서 해결 가능)

    등록 폼과 등록 URI 일치하는 것을 추천 수정폼, 수정도 동일

    - 컨트롤 URI

    GET, POST만 지원하므로 제약이 있음(제약 해결을 위해 동사로  된 리소스 경로 사용)

    POST /new, /edit, /delete가 컨트롤 URI

    HTTP 메서드로 해결하기 애매한 경우 사용(HTTP API 포함)

     

    5) 참고하면 좋은 URI 설계 개념

    - 문서

    단일 개념(파일 하나, 객체 인스턴스, 데이터베이스 row)

    /member/100

    - 컬렉션

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

    /members

    - 스토어

    클라이언트가 관리하는 자원 저장소, 클라이언트가 리소스의 URI를 알고 관리

    /files

    - 컨트롤러, 컨트롤 URI

    문서, 컬렉션, 스토어로 해결하기 어려운 추가 프로세스 실행, 동사를 직접 사용

    /members/{id}/delete

    728x90
    댓글