본문 바로가기
HTTP

모든 개발자를 위한 HTTP 웹 기본 지식_섹션5_HTTP메소드_응용

by 킴도TV 2022. 2. 8.

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

데이터 전달 방식은 크게 2가지

  • 쿼리 파라미터를 통한 데이터 전송
    • GET
    • 주로 정렬 필터(검색어)

예시) 앱 클라이어언트에서 웹뷰 띄울때 => 스터디때 치느님 명세서 보여드리자

  • 메시지 바디를 통한 데이터 전송
    • POST, PUT, PATCH
    • 회원 가입, 상품 주문, 리소스 등록, 리소스 변경

예시) 로그인, 프로필 설정 => 스터디때 뇽뇽 코드를 보여드리자

HTML Form을 통한 데이터 전송

  • 회원 가입, 상품 주문, 데이터 변경
  • POST 일때는 Content-Type이 application/x-www-form-urlencoded 이고 httpbody에 urlEncoding 방식으로 데이터가 들어갑니다.
    • 앱에서 URLEncoding 예시) iOS 라이브러리로 많이 사용되는 Moya에서는 메소드가 .requestParameters(parameters: parameters, encoding: URLEncoding.default) 이다.
  • GET일때는 데이터가 쿼리 파라미터로 전달된다.
    • 예시) 앱에서 쿼리파라미터 보낼때 예시) Moya에서 사용되는 메소드가 .requestParameters(parameters: parameters, encoding: URLEncoding.queryString) 이다.
  • multipart/form-data는 앱에서도 사용됩니다.
    • 뇽뇽 습관 기록시 multipart/form-data 를 사용(Alamofire의 upload(multipartFormData:) 메소드).

HTTP API 설계 예시

HTTP API - 컬렉션

  • POST 기반 등록
  • 예) 회원 관리 API 제공

HTTP API - 스토어

  • PUT 기반 등록
  • 예) 정적 컨텐츠 관리, 원격 파일 관리

HTML FORM 사용

  • 웹 페이지 회원 관리
  • GET, POST만 지원 (현실적으로 불가능하다 -> 컨트롤러 URL 사용, POST의 /new, /edit, /delete가 컨트롤 URI)

정리

참고하면 좋은 URI 설계 개념

  • 문서(document)
    • 단일 개념(파일 하나, 객체 인스턴스, 데이터베이스 row)
    • 예) /members/100, /files/star.jpg
  • 컬렉션(collection)
    • 서버가 관리하는 리소스 디렉터리 서버가 리소스의 URI를 생성하고 관리 예) /members
  • 스토어(store)
    • 클라이언트가 관리하는 자원 저장소 클라이언트가 리소스의 URI를 알고 관리 예) /files
  • 컨트롤러(controller), 컨트롤 URI
    • 문서, 컬렉션, 스토어로 해결하기 어려운 추가 프로세스 실행 동사를 직접 사용
    • 예) /members/{id}/delete

강의 듣고 느낀점: 서버로 요청을 보낼 때마다 파라미터를 어떻게 보낼지 매번 달라서 당황한 적이 있었는데(내가 어떻게 보내야 하는지 모르는경우?) 이렇게 METHOD 및 관례에 따라 파라미터 보내는 방식을 제대로 알려줘서 도움이 많이 되었습니다.