Slide 1

Slide 1 text

Intro to GraphQL Workshop 10 Jan 2021

Slide 2

Slide 2 text

Michael Cheng Lead Software Engineer, GovTech @CoderKungfu

Slide 3

Slide 3 text

Why is GraphQL?

Slide 4

Slide 4 text

Why GraphQL? ● GraphQL is a RESTful API. ● You only use HTTP POST to send data. ● Request body can be a Form Data or JSON. ● You still need to take care of Authentication, Authorisation and SSL/TLS on your application server.

Slide 5

Slide 5 text

What is RESTful API?

Slide 6

Slide 6 text

REST API ● Representational state transfer. ● 4 components of a REST API: ○ The endpoint ○ The method ○ The headers ○ The data (or body) ● CRUD operations on Resources. ● Reference: https://www.smashingmagazine.com/2018/01/understanding-using-rest-api/

Slide 7

Slide 7 text

https://www.edureka.co/blog/what-is-rest-api/

Slide 8

Slide 8 text

https://phpenthusiast.com/blog/what-is-rest-api

Slide 9

Slide 9 text

Examples GET https://example.com/api/events GET https://example.com/api/event/123456 POST https://example.com/api/events { "event": { "name":"GraphQL Workshop", "date":"2021-01-09 14:00 +08:00" ... }

Slide 10

Slide 10 text

Yet Another REST API

Slide 11

Slide 11 text

GraphQL as a REST API ● 4 components of a REST API: ○ The endpoint: https://example.com/graphql ○ The method: POST ○ The headers: ○ The data (or body): JSON / Form Data ■ query ■ variables ■ operationName

Slide 12

Slide 12 text

Hands On: Using a GraphQL client ● We will be using a GraphQL client to see how we can interactively make requests to a GraphQL service. ● https://graphql.org/swapi-graphql ● Tasks: ○ Compose a GraphQL request query. ○ Use the interactive documentation to find out what you can request. ○ Experience the build in validation.

Slide 13

Slide 13 text

Benefits

Slide 14

Slide 14 text

Benefits ● Only request as much data as you need. ● Smaller size payload. ● Single endpoint. Can use POST or GET. ● Documentation through a Schema doc. ● Strongly typed data.

Slide 15

Slide 15 text

GraphQL Schema Basics

Slide 16

Slide 16 text

GraphQL Basics ● Schemas and Types ○ Default scalar types ■ Int: A signed 32‐bit integer. ■ Float: A signed double-precision floating-point value. ■ String: A UTF‐8 character sequence. ■ Boolean: true or false. ■ ID: The ID scalar type represents a unique identifier. ■ Enum: Enumeration of constants. ○ You can declare your own types.

Slide 17

Slide 17 text

GraphQL Basics ● Other types: ○ Lists: [ String ] ○ Non-null values: String! ○ Input types

Slide 18

Slide 18 text

Hands On: Let's build our own GraphQL Schema ● You are building a database for a Library. ● A library has many books ● Book has ISBN ● Book has publish date ● Book has many authors ● Book has many categories

Slide 19

Slide 19 text

Example Schema The "Query" type is special: it lists all of the available queries that clients can execute, along with the return type for each. In this case, the "books" query returns an array of zero or more Books (defined above).

Slide 20

Slide 20 text

Let's Build a GraphQL Client

Slide 21

Slide 21 text

Hands On: Let's build a GraphQL Client in React ● We will build a simple React app that shows all the movies in the Star Wars franchise. We will be using the Star Wars API. ● Instructions: https://github.com/CoderKungfu/graphql-workshop ● Using CodeSandbox: https://codesandbox.io

Slide 22

Slide 22 text

Let's Build a GraphQL Server

Slide 23

Slide 23 text

Hands On: Let's build a GraphQL Server ● We will be using the Apollo GraphQL library to build our own GraphQL Server. ● Apollo Server needs to know how to populate data for every field in your schema so that it can respond to requests for that data. To accomplish this, it uses resolvers. ● Instructions: https://github.com/CoderKungfu/graphql-workshop ● Using CodeSandbox: https://codesandbox.io

Slide 24

Slide 24 text

Questions?

Slide 25

Slide 25 text

Final Notes ● Join our Telegram Group: ○ http://bit.ly/techsavvy-telegram