클라이언트에서 서버로 데이터 전송
데이터 전달 방식은 크게 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)
이다.
- 앱에서 URLEncoding 예시) iOS 라이브러리로 많이 사용되는 Moya에서는 메소드가
- GET일때는 데이터가 쿼리 파라미터로 전달된다.
- 예시) 앱에서 쿼리파라미터 보낼때 예시) Moya에서 사용되는 메소드가
.requestParameters(parameters: parameters, encoding: URLEncoding.queryString)
이다.
- 예시) 앱에서 쿼리파라미터 보낼때 예시) Moya에서 사용되는 메소드가
- multipart/form-data는 앱에서도 사용됩니다.
- 뇽뇽 습관 기록시 multipart/form-data 를 사용(Alamofire의
upload(multipartFormData:)
메소드).
- 뇽뇽 습관 기록시 multipart/form-data 를 사용(Alamofire의
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 및 관례에 따라 파라미터 보내는 방식을 제대로 알려줘서 도움이 많이 되었습니다.
'HTTP' 카테고리의 다른 글
모든 개발자를 위한 HTTP 웹 기본 지식_섹션6_3xx_Redirection(2) (0) | 2022.02.14 |
---|---|
모든 개발자를 위한 HTTP 웹 기본 지식_섹션6_3xx_Redirection(1) (0) | 2022.02.14 |
모든 개발자를 위한 HTTP 웹 기본 지식_섹션4_HTTP_메서드 (0) | 2022.02.06 |
HTTP_지속_커넥션 (0) | 2022.01.25 |
모든 개발자를 위한 HTTP 웹 기본 지식_섹션2_URI와_웹_브라우저_요청_흐름 (0) | 2022.01.25 |