HTTP
HTTP 메서드
keepgoing
2021. 11. 28. 22:42
쿼리 파라미터를 통한 데이터 전송
- GET, 주로 정렬 필터(검색어)
메시지 바디를 통한 데이터 전송
- POST, PUT, PATCH
- 회원가입, 상품 주문, 리소스 등록, 리소스 변경 등
클라이언트에서 서버로 데이터 전송 4가지 상황
- 정적 데이터 조회(이미지, 정적 텍스트 문서)
- 동적 데이터 조회(주로 검색, 게시판 목록에서 정렬 필터)
- HTML FORM을 통한 데이터 전송(POST, GET 방식, 회원 가입, 상품 주문)
- HTTP API를 통한 데이터 전송(회원 가입, 상품 주문, 데이터 변경, 서버 to 서버, Ajax, JSON)
HTML FORM 데이터 전송
- 파일 전송(multipart/form-data)
HTTP API 데이터 전송
- 메시지 바디를 통해서 데이터 전송
- React, VueJs 같은 웹 클라이언트와 API 통신으로 자주 사용(자바스크립트를 통한 통신에 사용, AJAX)
POST 특징
- 클라이언트 URI 지정 x, 서버가 자동으로 URI 지정
- 컬렉션 방식
컬렉션
- 서버가 관리하는 리소스 디렉토리
- 서버가 리소스의 URI를 생성하고 관리
PUT 특징
- 클라이언트가 URI 지정하고 관리까지함
- 스토어 방식
스토어
- 클라이언트가 관리하는 리소스 저장소
HTML FORM 사용
- POST, GET 방식만 지원
- AJAX 같은 기술을 사용해서 해결 가능
- 컨트롤 URI 사용
컨트롤 URI
- HTML FORM 방식 제약을 해소하기 위해 동사로 된 리소스 경로 사용
- POST의 /new, /edit, /delete가 컨트롤 URI
- HTTP 메서드로 해결하기 애매한 경우 사용(HTTP API 포함)
문서(Document)
- 단일 개념(파일 하나, 객체 인스턴스, 데이터베이스 row)
- 예) /members/100, files/star.jpg
컬렉션(Collection)
- 서버가 관리하는 리소스 디렉터리
- 서버가 리소스의 URI를 생성하고 관리
- 예) POST/members
스토어(store)
- 클라이언트가 관리하는 자원 저장소
- 클라이언트가 리소스의 URI를 알고 관리
- 예) PUT/files
컨트롤러, 컨트롤 URI
- 문서, 컬렉션, 스토어로 해결하기 어려운 추가 프로세스 실행
- 동사를 직접 사용
- 예) /members/{id}/delete
- Form 형식의 경우 GET, POST만 사용할 수 있어서 컨트롤 URI가 불가피함
validation GET과 POST 같은 URI 사용
- 서버에 데이터를 보냈는데 문제가 있어 refresh해야할 때, URI가 다르면 깔끔하지 않을 수 있으므로
리소스 위주의 설계
- ex) 회원이면 members(컬렉션이어서 s붙음), 주문이면 orders,
- 행위는 GET, POST, PUT, DELETE로 처리
- ex) 회원 등록 - POST/members/input, 회원 조회GET/members
- 행위는 GET, POST, PUT, DELETE로 처리