[HTTP] 5. HTTP 메서드
모든 개발자를 위한 HTTP 웹 기본 지식 (김영한) 강의 수강 후 정리한 자료입니다.
❗HTTP 메서드를 활용해보자❗
✨ 클라이언트에서 서버로 데이터 전송
데이터 전달 방식
- 쿼리 파라미터를 통한 데이터 전송
-> cf) 쿼리 파라미터란? “?”를 사용해서 URL 내 나타내는 것. 예를 들어 /search? age=21 등이 있다.
-> GET
-> 주로 정렬 필터 (검색어) - 메시지 바디를 통한 데이터 전송
-> POST, PUT, PATCH
-> 회원 가입, 상품 주문, 리소스 등록, 리소스 변경
1. 정적 데이터 조회
- 쿼리 파라미터 미사용
- 이미지, 정적 텍스트 문서
2. 동적 데이터 조회
- 쿼리 파라미터 사용
- 검색, 게시판 목록에서 정렬 필터 (검색어)
-> 서버에서 찾아서 각자에 맞는 데이터를 뿌려 줘야 함.
3. HTML Form을 통한 데이터 전송
- 회원 가입, 상품 주문, 데이터 변경
form 태그를 사용한 경우 (application/x-www-form-urlencoded)
- 전송 데이터를 url encoding 처리
- GET, POST만 가능
- POST면 메시지 바디에 쿼리 파라미터로 바꿔 넣고, GET이면 URL에 쿼리 파라미터로 바꿔 추가한다.
- URL이 달라지기 때문에 원하는 값이 나오지 않을 수도 있다. 그러므로 form 태그에는 가급적 POST를 사용하자. (GET은 조회 시에만 사용)
multipart/form-data를 사용한 경우
- 메시지 바디에 여러 개의 파일들을 넣어 보냄.
- 동영상, 텍스트 파일 등 종류가 다른 파일들을 한 번에 보낼 때 사용할 수 있다.
4. HTTP API를 통한 데이터 전송
- 회원 가입, 상품 주문, 데이터 변경
- 서버 to 서버, 앱 클라이언트, 웹 클라이언트(Ajax)
- 직접 메시지를 만들어 전송
- POST, PUT, PATCH : 메시지 바디를 통해 데이터 전송
✨ HTTP API 설계 예시
컬렉션
- 서버가 관리하는 리소스 디렉토리
ex) /members - 클라이언트가 리소스 URI를 모르는 경우
- 서버가 리소스 URI를 관리 및 담당한다.
- POST를 사용해 자원을 등록함.
- POST 요청을 보내면 서버에서 알아서 리소스 URI를 생성하고 보낸다.
스토어
- 스토어 : 클라이언트가 관리하는 리소스 저장소
- 클라이언트가 리소스의 URI를 알고 관리
ex) /files/200 - 신규 자원을 등록할 때, 클라이언트가 리소스 URI를 알고 있는 경우
- PUT을 사용해 자원을 등록함. (클라이언트가 URI를 알고, 직접 지정함.)
- 신규 등록할 때 PUT은 거의 사용하지 않음.
HTML FORM
- GET, POST만 지원
- 이런 제약을 해결하기 위해 컨트롤 URI 사용
cf) 컨트롤 URI : 동사로 된 리소스 경로
ex) /new, /edit, /delete - HTTP 메서드로 해결하기 애매한 경우 사용
정리
- HTTP API - 컬렉션
- HTTP API - 스토어
- HTML FORM
-> 순수 HTML + HTML form 사용
URI 설계 개념
- 문서(document)
- 단일 개념(파일 하나, 객체 인스턴스, 데이터베이스 row) ex) /members/100
- 컬렉션 ex) members
- 스토어 ex) /files
- 컨트롤러, 컨트롤 URI
- 문서, 컬렉션, 스토어로 해결하기 어려운 추가 프로세스 실행
- 동사를 직접 사용 ex) members/{id}/delete