[ ] , REST. GraphQL |
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 , : 1) 2) .
, GraphQL .
, GraphQL.
GraphQL . , , GraphQL.
, , GraphQL , .
GraphQL, , . GraphQL, GraphQL- . GraphQL . GraphQL, .
GraphQL, , (schema) , . , GraphQL, . .
GraphQL query ( ), mutation ( ). , GraphQL- , . - JSON.
GraphQL . , . , , . GraphQL .
Pluralsight Building Scalable APIs with GraphQL
, ? , .
GraphQL . , , . , . , .
GraphQL , GraphQL. GraphQL , , .
GraphQL. , . , GraphQL .
Pluralsight Building Scalable APIs with GraphQL
( ), GraphQL, . , GraphQL API, .
, , . , , , , . GraphQL.
, , - . GraphQL (schema), .
, , GraphQL. , (graph) . , , GraphQL.
? GraphQL, REST API, . , , , .
REST API (endpoints). , .
REST API , . , , .
REST API . , . , . , .
, READ :
/ResouceName
;/ResourceName/ResourceID
ID. , , . REST-, , . GraphQL (over-fetching) , . .
REST API . . API .
GraphQL . , REST API, , REST API . , - API HTTP. API , REST, , . GraphQL .
GraphQL , , , :
GraphQL- . , (fields) (types). , . , API, .
GraphQL , , . , , . GraphQL API, .
GraphQL.
. .
, GraphQL . , GraphQL , .
, . . .
. , , , . .
GraphQL . . , , , , . API , . API .
, , API . API . , - . .
? GraphQL REST ?
, .
, , - . , . , , , .
, : 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. .
{
person(personID: 4) {
name,
birthYear,
homeworld {
name
},
filmConnection {
films {
title
}
}
}
}
. , .
. 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.