2016-10-29 5 views

답변

2

REST는 GraphQL 같은 건축 양식이 아닌 형식이나 쿼리 언어 (이다)입니다. 부분적인 리소스 나 리소스의 계층을 지원하는 API를 만들 수 있습니다 (다른 예에는 JSON 패치 또는 JSON 그래프가 포함될 수 있습니다). 그런 접근 방식은 REST의 개념적 부분이 아닙니다. 한편, 은 GraphQL의 개념적 부분 인입니다. GraphQL과 약간의 유사점을 가진 예제를 골랐지 만, 이는 RESTful 서비스라는 사실 때문이 아닙니다.

반면에 REST는 GraphQL을 따르지 않는 몇 가지 접근법을 기반으로합니다 (또는 그 반대). 불완전한 목록은 다음을 포함합니다 :

  • HTTP는 REST의 구성 요소입니다. GraphQL 사양은 "클라이언트"와 "서버"를 말합니다. 그러나 나는 그것을 읽지 않았습니다. HTTP가 필요합니다.
  • REST는 HTTP 동사를 기반으로합니다. GraphQL은 HTTP를 요구하지 않으므로 HTTP 동사를 요구할 수 없습니다. GraphQL을 사용하면 하나의 쿼리에서 연산을 혼합 할 수 있으므로 하나의 요청에서 돌연변이와 쿼리를 동시에 실행할 수 있습니다. REST와 호환되지 않는 쿼리는 GET이어야하며 돌연변이는 POST 또는 PUT이어야합니다.
  • GraphQL에서 HTTP 상태 코드의 의미가 누락되었습니다.
+0

당신은 틀림없이 옳습니다. 어쩌면 두 가지를 비교할 수도 있고 그렇지 않을 수도 있습니다. 지금까지는 GraphQL을 HTTP와 관련하여 보았습니다.이 목적으로 Facebook에 의해 삽입 되었기 때문입니다. –

+1

HTTP 이외에 다른 것을 본 적이 없습니다. 사실, 전송 또는 응답 직렬화 형식 (JSON은 필수는 아니지만 "권장")과 같은 중요한 작업을 위해 사양에서 HTTP와 같은 전송을 통해 전송되는 공간을 남겨 두는 것에 상당히 놀랐습니다. GraphQL이 유비쿼터스 언어가 될 수 있음을 확신하고 싶을 때 유용 할 수 있습니다. 그러나 많은 사람들이 RESTful 서비스가 "독점적"이고 GraphQL이 "개방적"이라고 생각하는 것으로 나타났습니다. 스펙의 이러한 차이 때문에 독점적 인 전송 또는 직렬화 형식이 허용되었지만 이는 공개되지 않았습니다. – BlueM