해당 글은 인프런의 김영한님의 강의인 '모든 개발자를 위한 HTTP 웹 기본 지식'을 공부하며 작성한 글입니다.
HTTP 메서드
URI를 설계할 때, Resource가 무엇인지를 보고 해당 리소스를 URI에 녹이자
어떤것을 할지를 나타내는 동사는 HTTP 메서드로 표현한다.
- GET : 리소스 조회
- POST : 요청 데이터를 처리 (주로 등록)
- PUT : 리소스를 대체, 해당 리소스가 없으면 생성
- PATCH : 리소스 부분 변경
- DELETE : 리소스 삭제
GET
서버에 전달하고 싶은 데이터는 쿼리를 통해서 전달.
메세지 바디를 통하여 데이터를 전달할 수 있지만, 지원하지 않는 곳이 많아 실무에서 권장하지 않는다고 함.
POST
- 요청 데이터 처리
- 메세지 바디를 통하여 서버로 요청 데이터 전달
어떤 처리?
- 새 리소스를 생성
- 요청 데이터 처리
- 다른 메서드로 처리하기 애매한 경우
애매하면 POST
PUT
- 리소스를 덮어써버리는 개념
- 클라이언트가 리소스의 위치를 알고 URI를 지정한다
PATCH
DELETE
HTTP 메서드의 속성
- 안전 (Safe Methods)
- 멱등 (Idempotent Methods)
- 한 번 호출하든 백번 호출하든 결과가 똑같다
- GET, PUT, DELETE
- POST는 멱등하지 않기 때문에 설계할 때 주의가 필요하다
- 캐시가능 (Cacheable Methods)
- 응답 결과 리소스를 캐시해서 사용해도 되는지?
- GET, HEAD, POST, PATCH이 캐시가 가능하지만 실제로는 GET, HEAD 정도만 캐시 사용
HTML 안에서 form
태그안에 삽입한 submit
이벤트가 발동되면 전송되는 형식.
- HTML form submit 시 POST 전송
- Content-type : application/x-www-form-urlencoded 사용
- form의 내용을 메시지 바디를 통하여 key = value 형태로 전송
- url encoding 처리 (그래서 content-type이 urlencoded)
- GET 전송도 지원
- Content-Type : multipart/form-data
- 파일 업로드 같은 바이너리 데이터 전송 시 사용
- 다른 종류의 여러 파일과 폼의 내용을 함께 전송할 수 있다
HTML Form 전송은 GET, POST만 지원
HTML API 전송
- 서버에서 서버로 통신하거나 앱 클라이언트와 통신할 때 사용
- 웹 클라이언트에서는 HTML form 전송 대신 ajax 통신 시 사용
- POST, PUT, PATCH : 메세지 바디를 통하여 데이터 전송
- GET : 조회, 쿼리 파라미터로 데이터 전달
- Content-Type : application/json을 주로 사용