Spring 강의/network

[network] - (5) HTTP메서드 활용

lxexjx 2022. 4. 5. 11:23

[데이터 전달 방식]
1.쿼리 파리미터를 통해 : GET
2.메세지 바디를 통해 : POST, PUT, PATCH

 


[클라이언트에서 서버로 데이터 전송]
1.정적 데이터 조회 - 이미지나 정적텍스트 문서, GET사용, 쿼리 파라미터 없이 리소스 경로로 단순 조회 가능


경로가 /star.jsp면 서버에서 그 이미지를 클라이언트에 내려줘. 추가적인 데이터를 내려주는게 없어.단순히 URI 경로만 넣으면 받아서 이미지 리소스를 클라이언트에 내려줘.


2.동적 데이터 조회 - 조회시 데이터 전달할 때. 주로 검색, 게시판 목록, 데이터 조회

HTTP메세지가가 만들어져서 (GET /search?q=hello&hl=ko HTTP/1.1 Host: www.google.com) 전달하면 서버에서 받아서 쿼리 파리미터를 가지고 key&value를 꺼내서 결과를 응답해줘.


3.HTML Form데이터 전송

웹브라우저가 폼의 데이터를 읽어서 HTTP메세지를 생성해줘

Content-Type: application/x-www-form-urlencoded 이 값이디폴트 값. form의 메세지를 메세지 바디에 ket&value형식으로 (쿼리마라이터 처럼)보내줌. 전송 데이터를 url emcoding처리함.
키&밸류스타일로 데이터를 만들고 http바디에 넣고 쿼리파라미터와 동일한 방식으로 서버에 전송


get으로 바꿔서 보내면 (get은 메세지 바디를 안쓰겠지!) 쿼리 파라미터에 넣어서 서버에 전달

post면 메세지 바디에, get이면 url경로에.


get은 리소스 변경하면 안돼!~

 

파일같은거 전송할 때 웹브라우저가 경계를 잘라서 여러 멀티파트로 보내



4. HTTP API 전송 - html폼을 사용하지 않음

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

서버 to 서버,앱 클라이언트,웹 클라이언트(html에서 form대신 자바스크립트로 통신:AJAX)



[HTTP API]

<회원 관리 시스템>
API 설계 - POST 기반 등록
• 회원 목록 /members -> GET
• 회원 등록 /members -> POST
• 회원 조회 /members/{id} -> GET
• 회원 수정 /members/{id} -> PATCH, PUT, POST
• 회원 삭제 /members/{id} -> DELETE

 

POST-신규자원등록
1. 클라이언트는 등록될 리소스의 URI를몰라
회원데이터로 서버에 던지면 '서버'가 알아서 회원 저장하고 식별할 수 있는 URI만들어줘.
2. 서버가 새로 등록된 리소스 URI를 생성
3. 컬렉션이란?
서버가 관리하는 리소스 디렉토리로 서버가 리소스의 URI를 생성하고 관리함.여기서 컬렉션은 /members

 

 

<파일 관리 시스템>
API 설계 - PUT 기반 등록
• 파일 목록 /files -> GET
• 파일 조회 /files/{filename} -> GET
• 파일 등록 /files/{filename} -> PUT
• 파일 삭제 /files/{filename} -> DELETE
• 파일 대량 등록 /files -> POST

PUT-신규자원등록  post를 안쓰고 있음.
1. 클라이언트가 리소스 URI를 알고 있어야 한다.
파일 등록 시 /files/{파일이름}을 넣어준다? : 이 uri를 클라이언트가 알고있다!-> PUT
PUT /files/star.jpg
2. 클라이언트가 직접 리소스의 URI를 지정한다.
cf.post는 /members에 데이터 보내면 서버가 알아서 회원 id만들고 uri경로도 알아서 만들어서 내려줬음.(클라가 서버에 요청하는 것!)
put은 uri를 다 알고 등록해. 클라이언트가 직접 관리
3. 스토어(Store)란?
클라이언트가 관리하는 리소스 저장소
클라이언트가 리소스의 URI를 알고 관리. 스토어는 /files


<HTML FORM 사용>
회원 목록 /members -> GET
회원 등록 폼 /members/new -> GET
회원 등록 /members/new, /members -> POST
회원 조회 /members/{id} -> GET
회원 수정 폼 /members/{id}/edit -> GET
회원 수정 /members/{id}/edit, /members/{id} -> POST
회원 삭제 /members/{id}/delete -> POST

get,post만 사용
BUT 컨트롤 URI란?제약이 있어 POST의 /new, /edit, /delete가 컨트롤 URI이렇게 사용


[HTML FORM 사용]

HTML FORM은 GET,POST만 지원

[정리]
• HTTP API - 컬렉션 : POST 기반 등록 , 서버가 리소스 URI 결정 많이 써~
• HTTP API - 스토어 : PUT 기반 등록 ,클라이언트가 리소스 URI 결정
• HTML FORM 사용 : 순수 HTML + HTML form 사용 , GET, POST만 지원

post로 신규데이터 등록 : 클라이언트가 서버에 요청. 서버가 리소스를 알아서 내려줌.
put 기반 등록 : 리소스 url를 알고 등록 . 그래서 클라이언트가 등록될 리소스를 직접 관리->"스토어"