API GET 방식에 대한 고찰

존스노우·2023년 2월 8일
0

기타

목록 보기
1/7

사소한 궁금증.

GET 방식 메소드는 항상 페스베리어블 혹은 쿼리 파라미터로

전송해야 된다. 조회를 하는 기능이기 때문?

하지만 그길이가 너무 길면?

리퀘스트 바디를 쓰면 안됄까 ?

일단 문제점 3개

  1. 캐싱 ->
  • GET 메소드의 응답은 일반적으로 캐싱 가능하며, 리퀘스트 바디를 포함하면 캐싱 X
  1. RESTFul semantics ->
  • 의미론적으로 많은 구성원들은, GET 메서드가 원래 디자인 철학대로 구현 됬을 거란 기대하는 것을 말함 ..(GET 방식인대 당연히 쿼리파마리터지!)
  1. 지원하지 않는 클라이언트
  • 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 프로토콜에 관한 표준 명세 문서이다.
profile
어제의 나보다 한걸음 더

0개의 댓글