사소한 궁금증.
GET 방식 메소드는 항상 페스베리어블 혹은 쿼리 파라미터로
전송해야 된다. 조회를 하는 기능이기 때문?
하지만 그길이가 너무 길면?
리퀘스트 바디를 쓰면 안됄까 ?
일단 문제점 3개
- 캐싱 ->
- GET 메소드의 응답은 일반적으로 캐싱 가능하며, 리퀘스트 바디를 포함하면 캐싱 X
- RESTFul semantics ->
- 의미론적으로 많은 구성원들은, GET 메서드가 원래 디자인 철학대로 구현 됬을 거란 기대하는 것을 말함 ..(GET 방식인대 당연히 쿼리파마리터지!)
- 지원하지 않는 클라이언트
- Spring RestTemplate 경우 GET 메서드를 사용하는 경우
Body 값을 보내지 않음, 특정 클라는 GET BODY가 무시되는 경향이 있음
그러면 계속해서 지양해야 되는가?
https://www.rfc-editor.org/rfc/rfc7230#section-3.3
-
이전 RFC2616 과 다르게 최신 RFC7230-7237로 대체 됨.
-
요청을 처리할 때 메시지 본문을 무시해야 합니다 문구가 삭제됨.
-
메서드 의미와, 요청메시지 프레임은 독립적이 됨.
-
GET 메서드는 모든 정보 검색 의미 URI에 의해 식별됨 문구 삭제됨
- GET 요청에도 페이로드 바디가 허용이 됨!
- 그래서 GET BODY에 데이터를 넣어도 정상적으로 작동이 됨.
- 허나 오래된 된 클라이언트에선 여전히 거절될 수 있다.
번외 RFC?
- RFC(Request for Comments)는 Internet Engineering Task Force (IETF)에서 제정하는 표준 명세 문서이다. 인터넷에 관련된 기술, 프로토콜, 프로세스 등의 규약을 정의하고 관리하는 데 사용된다. RFC 7230-7237은 HTTP/1.1 프로토콜에 관한 표준 명세 문서이다.