2016-11-18 2 views
1

호기심에서 벗어나 GraphQL에 대해 알아보기 시작합니다. this article의 샘플을 기반으로 REST API 요청이 표시됩니다. 그것은 무국적입니까? 요청이없고 서버로부터 응답이 없다는 것을 의미합니까? 그렇다면 REST API보다 리소스가 얼마나 더 가볍습니까?GraphQL은 상태를 유지하지 않습니까?

답변

1

무국적입니까?

예, 서버가 요청을 올바르게 해석하기 위해 클라이언트 상태를 알 필요가없는 한, 필요한 모든 정보가 요청 자체 (헤더 및 본문)에 포함됩니다.

내게 REST API 요청 인 것 같습니다.

아마도 그렇지 않습니다. 그것은 하이퍼 미디어 제약에 완전히 실패합니다. (사양은 링크에 대한 참조가 없으므로 큰 힌트입니다.) "자원"에 대해 약간 혼란 스럽습니다. graphql.org

HTTP에서

는 일반적으로 핵심 개념으로 "자원"을 사용하여 REST과 연관됩니다. 반대로 GraphQL의 개념 모델은 엔티티 그래프입니다. 결과적으로 GraphQL의 엔티티는 URL로 식별되지 않습니다.

그래서 엔티티 그래프의 다른 하위 세트의 표현을 가리키는 여러 URI와 그래프의 모든 수정에 사용되는 단일 URI를 얻습니다. 유니폼 인터페이스 뒤에 이러한 "리소스"가 모두 단일 경로를 사용하여 구현됩니다.

REST is an architectural style "후보 아키텍처에서 유도하는 속성에 대해 선택합니다." GraphQL이 다른 속성 집합에 관심이있는 것처럼 보입니다. 즉 그들은 다른 종류의 문제를 해결하려고 노력하고 있다고 말합니다.

+2

다음과 같은 몇 가지 문제가 있습니다. 1. 사람들이 REST라고 부르는 많은 API는 HATEOAS 또는 링크를 지원하지 않으며, 사람들은이를 REST로 간주합니다. 2. GraphQL 쿼리는 GET 요청을 통해 전적으로 쿼리 매개 변수는 평상시처럼 캐시 될 수 있습니다. – stubailo

+0

아직 관련 질문이 없습니다. 둘 다 HTTP를 기반으로하므로 Oauth 2.0과 OpendID 연결 토큰의 동일한 구현을 계속 사용할 수 있습니까? –

+0

GET 방법 사용시 좋은 점; 나는 POST를 통해 모든 것이 진행되고 있다고 제안하는 무언가의 나쁜/오래된 복사본을 발견했습니다. – VoiceOfUnreason

2

GraphQL은 클라이언트가 한 번의 요청으로 여러 리소스를 요청할 수있어 왕복 시간을 절약하고 클라이언트가 실제로 필요한 필드 만 필터링 할 수 있기 때문에 REST보다 효율적이라고도합니다. 따라서 하루가 끝날 때 길 찾기 요청이 비슷해 보이지만 더 강력한 쿼리 언어를 사용하면 클라이언트가 원하는 데이터를 정확히 얻을 수 있습니다.

네, REST와 마찬가지로 상태가 없습니다. 실제로 어떤 사람들은 GraphQL이 REST가 설명한 원래 요구 사항을 많이 충족한다고 말할 수도 있습니다.

관련 문제