Introduction
I'm a founder of a Visual Editor for GraphQL. This blog post is part of a tutorial for newbies. Follow me to get more and check other articles. I’ve already covered basics of GraphQL, introduction and Schema Definition Language. Feel free to comment, suggest changes.
Type definitions
scalar > Scalar type
type > Object type
interface > Interface type
union > Union type
enum > Enumerable type
input > Input object type
Scalar types
String - set of characters in UTF-8 format,
Int - 32-bit integer,
Float - floating point number,
Boolean - value true or false
ID - a type representing the unique identifier for the object.
Type modifiers
String > Nullable string
String! > Required string
[String] > List of strings
[String]! > Required list of strings
[String!]! > Required list of required strings
Example of a GraphQL schema
type Author {
id: Int!
firstName: String
lastName: String
"""
the list of Books by this author
"""
books: [Book]
}
type Book {
id: Int!
title: String
author: Author
pages: Int
}
Explore this example in our Visual Editor for GraphQL
This schema allows the following query:
type Query {
book: [Book]
author(id: Int!): Author
}
Input Arguments
Basic Input
type Root {
users(limit: Int): [User]!
}
Input with default value
type Root {
users(limit: Int = 10): [User]!
}
Input with multiple args
type Root {
users(limit: Int, sort: String): [User]!
}
Input with multiple args and default values
type Root {
users(limit: Int = 10, sort: String): [User]!
}
or
type Root {
users(limit: Int, sort: String = "asc" ): [User]!
}
Interfaces
interface Publication {
title: String!
releasedDate: String!
}
type Magazine implements Publication {
title: String!
releasedDate: String!
version: Int!
}
type Book implements Publication {
title: String!
releasedDate: String!
pages: Int!
}
Unions
union SearchResult = Book | Author
type Query {
search(text: String!): SearchResult
}
query {
search(text: "Park") {
... on Book {
title
}
... on Author {
name
}
}
}
Enums
enum RGB {
RED
GREEN
BLUE
}
type Root {
color: RGB
}
Input Object Types
input ListUsersInput {
limit: Int
since_id: ID
}
type Root {
users(params: ListUsersInput): [Users]!
}
If you're looking for best graphql tutorials check this post.
Top comments (1)
Great... Exactly what i was looking for :)