모든 데이터가있는 이전 .aspx 페이지를 유지 관리하고 있습니다. 콘텐츠를 표시하기 위해 페이지에서 필요로하는 콘텐츠는 쿼리 문자열의 일부로 GET 요청의 URL에 전달됩니다. 그 결과 기능을 계속 추가함에 따라 URL이 계속 커집니다.

모든 매개 변수를 쿼리 문자열에서 GET 요청의 본문으로 이동하려고합니다.

좋은 설계 결정이며 GET 요청에서 본문의 사용 사례는 무엇입니까?

댓글

  • 대신 단순히 POST 요청을 사용하지 않는 이유는 무엇입니까?
  • 나는 아무것도 만들거나 업데이트하지 않기 때문입니다. 서버에서 정보를 검색하는 중입니다.
  • 그것 '은 GET 요청이 멱 등성을 예상했습니다. 동일한 URL을 여러 번 요청하면 항상 동일한 결과를 얻을 수 있습니다. 예를 들어 캐싱을 허용합니다 (일부 브라우저와 프록시가 매우 공격적으로 수행함). 쿼리 매개 변수를 요청 본문으로 이동하는 경우이 기대치를 위반하는 것이므로이를 피하십시오. 당신은 ' 디버그하기 어려운 문제에 대비하고 있습니다. 불행히도 일부 시스템에는 몇 KB 정도의 URL 길이 제한이 있습니다. 아직 API를 설계 중이고 매우 복잡한 쿼리를 처리 할 수있는 경우 GraphQL API가 REST보다 더 적합 할 수 있습니다.
  • @amon이 말한 것 외에도 GET에 본문을 넣습니다. 요청이 명시 적으로 HTTP 사양을 위반했습니다. POST를 사용하십시오.
  • @Manya 이 Stack Overflow 답변 에 대한 의견은 Elasticsearch에 대해 약간 설명합니다. Elasticsearch는 일반적으로 브라우저에서 직접 사용하지 않고 내부 애플리케이션에서만 사용하므로 약간 더 유연합니다. 클라이언트와 네트워크를 완전히 제어 할 수 있습니다.

답변

본문이있는 GET 요청은 HTML 사양에서 지원 됩니다 .

스택 오버플로 질문 참조 이 설명이 맞습니까? HTTP GET 메소드에는 항상 토론을위한 메시지 본문이 없습니다 .

하지만 이는 드문 경우입니다.이 솔루션으로 사람들을 놀라게 할 것입니다. 단순히 POST로 전환하는 것이 더 좋습니다.

p>

유일한 단점 (장점?)은 짜증나는 RESTfulness 수행자들입니다.

댓글

  • 많은 자바 스크립트 라이브러리가 제공하지 않기 때문에 기술적 단점이 있습니다. ' 본문이있는 GET을 지원하지 않습니다. 검색을 수행하는 데이터베이스의 경우 그런 방식으로 수행하는 것이 논리적으로 합리적이지만 ' 단일 페이지 앱에서 ElasticSearch 또는 SOLR 인스턴스를 호출 할 수 없습니다 (이 콤보가 구현 된 유일한 API).
  • 이 질문은 같은 내용을 말합니다. stackoverflow.com/questions/978061/http-get-with-request-body " 예. 즉, 모든 HTTP 요청 message는 메시지 본문을 포함 할 수 있으므로이를 염두에두고 메시지를 구문 분석해야합니다. 그러나 GET에 대한 익살스러운 행동은 본문이 요청에 의미 론적 의미를 갖지 않도록 제한됩니다. 구문 분석에 대한 요구 사항은 메서드 의미 체계에 대한 요구 사항과 별개입니다. 예, GET으로 본문을 보낼 수 있으며 아니요, 그렇게하는 것은 결코 유용하지 않습니다. " 실제 답변에 자세한 내용이 있습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다