Γρήγορη αναφορά

Φύλλο οδηγιών GraphQL

Γρήγορος οδηγός για το GraphQL: σύνταξη ερωτημάτων, ορίσματα, ψευδώνυμα aliases, θραύσματα fragments, mutations, ορισμοί SDL και χρήση μέσω HTTP.

· Δημοσιεύτηκε

Το GraphQL είναι μια γλώσσα ερωτημάτων για API και ένα περιβάλλον εκτέλεσης για την ικανοποίηση ερωτημάτων με υπάρχοντα δεδομένα.

Ερωτήματα (Queries)

Βασικό ερώτημα και απόκριση JSON

{ status }

JSON Response:

{
  "data": {
    "status": "available"
  }
}

Εμφωλευμένα αντικείμενα (Nested Objects)

{
  hero {
    name
    height
  }
}

Λίστες (Lists)

{
  friends {
    name
  }
}

Ορίσματα (Arguments)

{
  hero(id: "1000") {
    id
    name
  }
}

Ψευδώνυμα (Aliases)

{
  luke: hero(id: "1000") {
    name
  }
  han: hero(id: "1001") {
    name
  }
}

Ονόματα πράξεων και μεταβλητές (Variables)

Query Definition:

query FindHero($id: String!) {
  hero(id: $id) {
    name
  }
}

Variables Payload (JSON):

{
  "id": "1000"
}

Τροποποιήσεις (Mutations)

mutation CreateReviewForEpisode($ep: Episode!, $review: ReviewInput!) {
  createReview(episode: $ep, review: $review) {
    stars
    commentary
  }
}

Ενσωματωμένα θραύσματα (Inline Fragments)

{
  search(q: "john") {
    id
    ... on User {
      name
    }
    ... on Comment {
      body
      author {
        name
      }
    }
  }
}

GraphQL μέσω πρωτοκόλλου HTTP

Αίτημα GET

fetch('https://api.example.com/graphql?query={me{name}}')

Αίτημα POST

fetch('https://api.example.com/graphql', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    query: 'query GetHero($id: String!) { hero(id: $id) { name } }',
    variables: { id: '1000' }
  })
})

Γλώσσα ορισμού σχήματος (SDL)

Βασικοί τύποι

type Query {
  me: User
  users(limit: Int): [User]
}

type User {
  id: ID!
  name: String
}

Ενσωματωμένοι βαθμωτοί τύποι (Scalars)

Τύπος Περιγραφή
Int Προσημασμένος ακέραιος 32-bit
Float Αριθμός κινητής υποδιαστολής διπλής ακρίβειας
String Ακολουθία χαρακτήρων UTF-8
Boolean Λογική τιμή true ή false
ID Μοναδικό αναγνωριστικό σε μορφή συμβολοσειράς

Λέξεις-κλειδιά ορισμού τύπων

Λέξη-κλειδί Περιγραφή
type Τύπος αντικειμένου με πεδία
scalar Προσαρμοσμένος βασικός βαθμωτός τύπος
interface Αφηρημένος τύπος που ορίζει πεδία προς υλοποίηση
union Αφηρημένος τύπος ομαδοποίησης αντικειμένων
enum Απαρίθμηση επιτρεπόμενων τιμών
input Σύνθετο αντικείμενο εισόδου ως όρισμα

Τροποποιητές τύπων (Type Modifiers)

Τροποποιητής Περιγραφή
String Συμβολοσειρά που επιτρέπει null
String! Συμβολοσειρά υποχρεωτική (non-nullable)
[String] Λίστα με στοιχεία που επιτρέπουν null
[String]! Υποχρεωτική λίστα με στοιχεία που επιτρέπουν null
[String!]! Υποχρεωτική λίστα με υποχρεωτικά στοιχεία

Διεπαφές (Interfaces)

interface Entity {
  id: ID!
}

type User implements Entity {
  id: ID!
  name: String
}

Απαριθμήσεις (Enums)

enum Direction {
  NORTH
  EAST
  SOUTH
  WEST
}

Ενώσεις (Unions)

union SearchResult = Human | Droid | Starship

type Query {
  search(text: String): [SearchResult]
}

Αναφορές

Σχετικά θέματα