1) 클라이언트에서 서버로 데이터 전송
2) HTTP API 설계 예시
-----------------------------------------------------------------------------------------------------------------------------------------
1) 클라이언트에서 서버로 데이터 전송
#데이터 전달 방식은 크게 두 가지
# 클라이언트에서 서버로 데이터 전송 4가지 상황
1) 정적 데이터 조회
- 쿼리 파라미터 없이 가능
- GET메서드로 리소스 PATH만 정해주면 가능
2) 동적 데이터 조회
- 주로 검색
- GET은 쿼리 파라미터 사용하여 데이터 전달
- 필터 = 검색어 ( 조회 조건을 줄여줌 )
3) HTML Form을 통한 데이터 전송
1. POST전송
2. GET 전송
- GET은 리소스 변경이 발생하는 곳에 사용하면 안됨 ( save에 GET메서드 사용불가 )
/members : 멤버 리스트를 조회 하는 기능이라 할 경우 GET사용 가능
- GET, POST만 지원
- 웹 브라우저가 요청 HTTP 메시지 생성
- GET 메서드의 경우 GET은 메시지 바디 안쓰므로 웹 브라우저가 쿼리 파라미터에 넣어버림
- POST메서드의 경우 메시지 바디에
3. multipart/form-data
- enctype을 multipart/form-data : 주로 파일(바이너리 데이터) 전송할 때
- 웹 브라우저가 자동으로 boundary 나눔
- 다른 종류의 여러 파일들과 함께 전송 가능
4) HTML API을 통한 데이터 전송
-----------------------------------------------------------------------------------------------------------------------------------------
2) HTTP API 설계 예시
# HTTP API 설계의 3가지 경우
1) HTTP API - 컬렉션
- /members 같은 것을 컬렉션 이라 한다.
- PATCH는 수정 - 가장 좋음 / PUT은 확실히 덮을 수 있을 때만 (ex. 게시글 수정)
- 클라이언트는 등록될 리소스의 URI를 모른다. (회원데이터만 서버에 던지면 서버가 알아서 저장 후 그 회원을 식별 할 수 있는 아이디(URI) 새로 만든다.
2) HTTP API - 스토어
- 파일 등록의 경우 PUT이 너무 잘맞는다.
- /files -> POST의 의미를 임의로 정할 수 있다. ex. 파일 대량 등록
- 클라이언트가 리소스 URI 알고 있어야한다.
@대부분 POST기반 (컬렉션)을 쓴다.
3) HTTP FORM 사용
- 회원등록폼 : /members/new ->GET
- 회원등록 : /members/new -> POST 두 경우와 같이 URI를 맞추면 좋다.
- 회원 삭제 : DELETE메서드를 사용하지 못하므로 control-URI (=controler) 사용하였다. (실무에서 자주 씀)
HTML FORM 은 로그인 같이 진짜 폼을 말함. 이 때 넣어진 데이터를
1. GET으로 보낼 경우 쿼리파라미터로,
2. POST의 경우 바디에 넣어서 보낸다.
이렇식으로 바디에 쿼리 형태로 넣어야함.
# 정리
- 문서는 하나로 끝나는 파일
- 컬렉션 : 서버가 URI 생성, 관리
- 스토어 : 클라이언트가 URI 관리
- 컨트롤러 : control-URI 사용 ( 리소스로 최대한 설계 -> 대부분 안되므로 컨트롤러 사용 )
출처 : 인프런 김영한님의 강의를 수강 후 정리한 내용입니다.
꾸준히 다시보자.
1. 220630
2. 220714
3. 220819
'Java, Spring > HTTP 웹 기본 지식' 카테고리의 다른 글
Section 7. HTTP 헤더1 - 일반 헤더 (0) | 2022.06.23 |
---|---|
Section 6. HTTP 상태 코드 (0) | 2022.06.23 |
Section 4. HTTP 메서드 (0) | 2022.06.19 |
Section 3. HTTP 기본 (0) | 2022.06.18 |
Section 2. URI와 웹 브라우저 요청 흐름 (0) | 2022.06.18 |