-

   rss_rss_hh_new

 - e-mail

 

 -

 LiveInternet.ru:
: 17.03.2011
:
:
: 51

:


[ ] , REST. GraphQL

, 26 2017 . 14:33 +


. Samer Buna. .

GraphQL REST API, :

Rest API REST-in-Peace API. GraphQL


Rest In Peace, RIP " ". , REST.

, .


. GraphQL REST - . REST , XML . XML JSON? , GraphQL REST , JSON XML.


GraphQL. . .


, .


: GraphQL?


, GraphQL:


  • . GraphQL .


  • . GraphQL , : 1) 2) .


  • . GraphQL . , , . , UI, , GraphQL.

, GraphQL .


, GraphQL.


GraphQL?


GraphQL . , , GraphQL.


, , GraphQL , .


GraphQL, , . GraphQL, GraphQL- . GraphQL . GraphQL, .


GraphQL, , (schema) , . , GraphQL, . .


GraphQL query ( ), mutation ( ). , GraphQL- , . - JSON.


GraphQL? ( )


GraphQL . , . , , . GraphQL .


image


Pluralsight Building Scalable APIs with GraphQL


, ? , .


GraphQL . , , . , . , .


GraphQL , GraphQL. GraphQL , , .


GraphQL. , . , GraphQL .


image


Pluralsight Building Scalable APIs with GraphQL


( ), GraphQL, . , GraphQL API, .


, , . , , , , . GraphQL.


, , - . GraphQL (schema), .


, , GraphQL. , (graph) . , , GraphQL.


? GraphQL, REST API, . , , , .


REST API?


REST API (endpoints). , .


REST API , . , , .


REST API . , . , . , .


, READ :


  • GET /ResouceName ;
  • GET /ResourceName/ResourceID ID.

, , . REST-, , . GraphQL (over-fetching) , . .


REST API . . API .


GraphQL . , REST API, , REST API . , - API HTTP. API , REST, , . GraphQL .


GraphQL?


GraphQL , , , :


  • GraphQL- . , (fields) (types). , . , API, .


  • GraphQL , , . , , . GraphQL API, .


  • GraphQL . . GraphQL, . GraphQL API .

GraphQL.


. .


, GraphQL . , GraphQL , .


, . . .


. , , , . .


GraphQL . . , , , , . API , . API .


, , API . API . , - . .


? GraphQL REST ?


RESTful API GraphQL API


, .


, , - . , . , , , .


, : Person, Planet Film. , . Person Film.


:


{
  "data": {
    "person": {
      "name": "Darth Vader",
      "birthYear": "41.9BBY",
      "planet": {
        "name": "Tatooine"
      },
      "films": [
        { "title": "A New Hope" },
        { "title": "The Empire Strikes Back" },
        { "title": "Return of the Jedi" },
        { "title": "Revenge of the Sith" }
      ]
    }
  }
}

. React :


// The Container Component:


// The PersonProfile Component:
Name: {person.name}
Birth Year: {person.birthYear}
Planet: {person.planet.name}
Films: {person.films.map(film => film.title)}

, , , , UI . UI JSON.


, RESTful API.


ID. , RESTful API :


GET - /people/{id}

, . RESTful API ID ID .


JSON :


{
  "name": "Darth Vader",
  "birthYear": "41.9BBY",
  "planetId": 1
  "filmIds": [1, 2, 3, 6],
  *** other information we do not need ***
}

:


GET - /planets/1

:


GET - /films/1
GET - /films/2
GET - /films/3
GET - /films/6

.


, . , , .


, . RESTful API http://swapi.co/. . , . . , , .


, RESTful API . , . , API , :


GET - /people/{id}/films

RESTful API , - . RESTful API , . .


GraphQL. GraphQL , . , . HTTP, HTTP- . , GraphQL, /graphql HTTP.


, . GraphQL:


GET or POST - /graphql?query={...}

GraphQL , . .


-, : , , . GraphQL :


{
  person(ID: ...) {
    name,
    birthYear,
    planet {
      name
    },
    films {
      title
    }
  }
}

, GraphQL. , . GraphQL JSON, . JSON, . , .


:


     .

, :


()    ?

GraphQL. JSON, (), GraphQL, JSON.


GraphQL c React UI, . , GraphQL, UI, UI .


GraphQL. , , . GraphQL , UI.


, . GraphQL , UI, , . , , API. .


GraphQL API . . , API ( ):


{
  person(personID: 4) {
    name,
    birthYear,
    homeworld {
      name
    },
    filmConnection {
      films {
        title
      }
    }
  }
}

. , .


GraphQL


. GraphQL .


, GraphQL, ( Denial of Service). GraphQL , . ( > > ) , . GraphQL, GraphQL .


. , . . , GraphQL , , GraphQL.


GraphQL API ( ), . , . , Facebook .


GraphQL . , GraphQL?


, , GraphQL DSL (domain specific language ) . , ( ).


. GraphQL . . GraphQL, GraphQL , . RESTful API.


GraphQL . RESTful API , . . .


GraphQL . . , .


. Graph Query Graph Cache. , GraphQL: , , .


. , . , . . . Relay.js .


, GraphQL N+1 SQL-. GraphQL , . , SQL- .


RESTful API , N+1, SQL-. GraphQL, , . , Facebook DataLoader.


, DataLoader , GraphQL. DataLoader . , SQL- .


DataLoader . , DataLoader . .


...


. - PluralsightLynda. Advanced React.js,Advanced Node.js Learning Full-stack JavaScript.


- - JavaScript, Node.js, React.js GraphQL . , (.). , ( ) #questions.


Samer Buna

Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/334182/

:  

: [1] []
 

:
: 

: ( )

:

  URL