GraphQL vs REST API | 가장 좋은 API는 무엇입니까?

6173 단어 apirestapigraphql
전체 유튜브 비디오 보기here

API란?


API는 응용 프로그램 프로그래밍 인터페이스(Application Programming Interface)의 머리글자 약자로, 두 응용 프로그램이 서로 통신할 수 있도록 하는 소프트웨어 브로커다.페이스북 같은 앱을 사용하거나 실시간 메시지를 보내거나 휴대전화로 날씨를 볼 때마다 API를 사용한다.REST와GraphQL은 API 디자인 구조로 튼튼하고 유지보수가 가능한 API를 구축하는 데 도움을 줍니다.More on APIs
"그래프QL과 REST API 사이에는 어떤 차이가 있나요?"이는 인터넷 세계에서 초보자들이 가장 많이 묻는 질문이다.차이점, 유사점, 장점을 소개해 드리겠습니다.

REST API


초보자에게 REST는 상태 이동을 나타낸다.REST API(또는 RESTful API)는 REST 체계 구조 스타일의 제약에 부합되고 RESTful 웹 서비스와 상호작용을 허용하는 웹 API이다.REST 체계 구조 스타일은 구성 요소 간의 상호작용의 신축성, 통일된 인터페이스, 구성 요소의 독립적인 배치를 강조하고 층 체계 구조를 만들어 캐시 구성 요소를 편리하게 함으로써 사용자가 감지하는 지연을 줄이고 안전성을 강화하며 유류 시스템을 봉인한다.좋아, 이것은 듣기에는 이해하기 어려울 수도 있지만, 이해하려면 매우 간단하다.

휴식은 일종의 관례이다



REST는 대체로 HTTP를 통해 통신하는 방법에 대한 약속이다.예를 들어, 응용 프로그램에서 HTTP Delete 메서드를 API로 보냈다고 가정합니다.기술적으로 이 방법이 delete라고 해도 데이터베이스에 데이터를 추가하거나 사용할 수 있습니다. 이것은 제안일 뿐 실행 중인 실례에서 강제로 실행되지 않기 때문입니다.

그래서 지금은 이 방법들이 전혀 관련이 없다고 생각할 수도 있지만 GET 방법을 사용하면 주체가 있을 수 없다. 이것은 GET 요청을 사용할 때 데이터를 보낼 수 없다는 것을 의미한다.이것은 일종의 제한이다.따라서 GET 방법은 데이터를 받으려는 경우에만 사용할 수 있습니다.

휴식 상태 코드


REST에는 상태 코드라는 개념도 있다.상태 코드의 도움말 아래 서버는 브라우저가 보낸 요청이 성공했는지 알려 줍니다.이렇게 많은 상태 코드가 있는데, 그것들도 번호에 따라 분류된다.가장 흔히 볼 수 있는 상태 코드는 200이다.이것은 보낸 요청이 성공했다는 것을 의미하며, 현재 응답 결과가 생겼습니다.


그러나 그것들은 단지 관례에 따라 세워진 도구/시스템일 뿐이다.그것들은 강제적으로 실행되지 않았다. 이것은 페이지가 성공할 때 개발자가 200개의 요청을 보낼 필요가 없다는 것을 의미한다.이들은'찾을 수 없다'는 뜻의 404 요청도 보낼 수 있다.따라서 브라우저는 보내는 요청이 오류를 초래했다고 생각하지만, 실제로는 정확한 응답을 받았습니다.따라서 상태 코드를 보내는 것은 API를 개발하는 사람에게 전적으로 달려 있습니다.이 상태 코드들은 사용 안내서일 뿐입니다.

GraphQL


GraphQL은 마을에서 가장 멋진 아이입니다.지난 몇 달 동안 보급률이 지수급으로 증가해 초보자들이 REST나 GraphQL을 선택하는 것에 곤혹스러워하고 있다.기술적으로 GraphQL은 REST의 한 단점을 사용한다.그래서 일반적으로 우리는 심지어 이 두 가지 일을 비교해서는 안 된다.
REST는 사용자가 따라야 할 구조/실천이지만GraphQL에 있어서는 실제 코드로 사용할 때 서버에서 실행됩니다.이제 REST가 실행 가능한 코드가 아니라는 생각에 당혹스러울 수 있습니다.아니오, REST 코드는 서버에서 실행되지만 GraphQL 코드는 서버에서 실행됩니다.

그렇다면 이제 GraphQL이 요청을 보내는 방식과 REST가 요청을 보내는 방식은 어떤 차이가 있을까.보통, 포트 '/graphql' 을graphql 서버에 할당합니다.GraphQL 서버는 사용자가 보낸 모든 조회를 데이터 맵으로 변환하려고 시도한 다음, 사용한 데이터 탱크에서 필요한 데이터를 수집하고 요청한 데이터를 채운 데이터 맵으로 되돌려줍니다.

‌GraphQL과 관련이 있을 때 클라이언트는 GraphQL 서버에 검색어와 변종을 보내서 이 검색어를 처리해야 합니다.이것도 HTTP 상태 코드처럼 무엇이 무엇인지를 약속하는 것이다.

GraphQL 쿼리


이상적인 상황에서 클라이언트가 보낸 조회는 백엔드든 원격 API 포트든 데이터를 바꾸어서는 안 된다.
query User {
    getuser(id: 1) {
    name
    }
}
POST 요청을 사용하여 위의 질의를 GraphQL 서버에 문자열로 전달합니다.현재GraphQL 서버는 문자열을 분석하고 데이터 맵을 생성하며 백엔드에서 지정한 함수를 실행하고 상기 형식으로 데이터를 되돌려줍니다.
REST API에서 데이터를 보내는 방식과 유사하며 구문을 유지하는 것이 추가 부담이라고 생각할 수 있습니다.이것이 바로 네가 잘못한 곳이다.백엔드 함수가 데이터를 되돌려줄 것을 기억하십니까?현재 getuser () 방법의 반환은 하나의 이름이 아닙니다.이것은 나이, 진도, 분석일 수 있지만, 우리는 조회에 따라 이름만 요청했다.따라서 GraphQL 서버는 나머지 데이터를 삭제하고 요청에 따라만 이름을 제공합니다.따라서 대량의 데이터 전송을 절약하고 더 빠른 성능을 실현하는 데 도움이 된다.

GraphQL은 모드에 기반을 두고 있습니다.


그래서 지금까지 GraphQL 조회는 SQL 조회와 약간 비슷하다고 볼 수 있다. 왜냐하면 그들은 조회에서 언급한 요청 데이터만 되돌려주기 때문이다.
위에서 말한 바와 같이 이러한 모드 기반 방법은 REST API를 불법으로 간주합니다. 왜냐하면 모드 라이브러리의 원인으로 인해 우리는 요청한 데이터만 얻기 때문입니다.따라서 데이터의 과도한 확보는 REST API와 동일하지 않습니다.이것 또한 우리가 데이터의 안전성을 더욱 빨리 디버깅하고 유지하는 데 도움이 된다.가장 중요한 것은 클라이언트에게 데이터를 전송하기 위해 맵을 만드는 것은 아주 좋은 메커니즘이다. 왜냐하면 우리는 데이터를 끼워 넣는 것을 도와 요청한 데이터를 정확하게 훑어보고 쉽게 얻을 수 있기 때문이다.
가장 흔히 볼 수 있는 데이터 매핑 예는 도서 조회이다.
query Book{
  book{
    author{
      books
    }
  }
}

GraphQL 돌연변이


앞에서 말한 바와 같이 돌연변이도 관례다.이것은 이해하기 쉽다.앞에서 말한 바와 같이 백엔드 함수는 데이터를 되돌려 주지만 기술적으로 백엔드는 해석기이다.createUser ()를 GraphQL 파서에 보냈습니다.GraphQL 해상도는 현재 해상도 함수 목록에서createUser () 라는 기존 함수를 검사하고, 이 함수를 찾으면 이 함수의 조회를 실행합니다.이후 결과는 지도에 표시되며 고객에게 돌아갈 준비가 되어 있습니다.

‌GraphQL은 나중에 사용할 수 있도록 캐시를 요청할 수 있지만, 현식 캐시가 없는 한, 데이터를 삭제하고 업데이트하는 데 사용되기 때문에 해상도 함수를 캐시하지 않습니다.

결론


지금까지 REST API와 GraphQL의 차이에 대해 탄탄한 틀과 이해를 가지셨으면 합니다.지금 너는 어떤 것을 써야 할지 알고 싶을 것이다.초보자로서, 당신은 restapi를 사용하여 탄탄한 이해를 얻고, 어떻게 일을 하는지, 그리고 초보자급 응용 프로그램을 구축해야 합니다.중급 또는 더 높은 등급의 코드는GraphQL을 더 좋아해야 합니다. 왜냐하면 코드가 더욱 조리 있고 사용하기 쉽기 때문입니다.하지만 초보자급 응용 프로그램에서 GraphQL을 사용하기 시작하면 매번 이 모드를 언급하는 것은 너무 심하다.
따라서, 이것은 틀림없이 당신의 머릿속에서 그것들의 차이와 용례에 대한 혼란을 없앴을 것이다.이제는 그것들을 더 많이 이해하고 인코딩을 시작할 때가 되었다!

좋은 웹페이지 즐겨찾기