Build Next Generation API with GraphQL
Channel: Databases A2Z
Date: 2020-06-27

GraphQL - Building a Next Generation API
Learn GraphQL with Laravel and Vue.js - Full Tutorial
☞ https://morioh.com/p/b72fc38362ca

Create a Fullstack app with Django, GraphQL and VueJS
☞ https://morioh.com/p/7cca4cc56557

How to set up GraphQL with Golang: A deep dive from Basics to Advanced
☞ https://morioh.com/p/040fc7ab1854

How to create the Node.js API with TypeScript and GraphQL
☞ https://morioh.com/p/bd0ec685fbee

Getting started with GraphQL and TypeScript
☞ https://morioh.com/p/667af9ed7376

This is a guest lecture done at the Faculty of Computer and Information Science in Ljubljana for students that are enrolled into Web Technologies.

First we dive into REST (a quick theoretical summary) and then we show a service built on NodeJS and MongoDB which contains simple REST endpoints for a blog.

After that we check the advantages and disadvantages of REST and talk about how GraphQL came to be. We explain the theory behind it and how it works and then we show an Apollo Server implementation which connects to the REST service we built earlier.

After the break we dive into the theoretical aspects of GraphQL and open topics in that area, these include language formalization for easier analysis and caching.

Part 1: Explaining REST with live coding, REST vs GraphQL and GraphQL with live coding

Introduction (0:00)
Telling the agenda and breaking into the mood.

Introduction into REST (8:30)
We quickly describe how REST works and talk about building a simple blog application backend.

Live coding (11:59)
We do some live coding - we show the pieces we already have for our REST service and complete our endpoints using the Express framework on NodeJS, MongoDB for our database and Swagger for our documentation.

Checking out the endpoints (29:59)
A summary of how many endpoints we made just for fetching our data. We present some of the disadvantages of fetching data on the frontend and how this affect frontend developers.

Intro into how GraphQL came into existence (36:08)
Talking about how Facebook had problems switching to mobile and what triggered the construction of GraphQL.

Looking at our application in a graph-like way (41:55)
Trying to transform our little blog application in a graph representation using nodes as our models.

GraphQL explaining the chunks (45:28)
We explain how GraphQL is structured, we show what a schema is and what queries, mutations, resolvers and subscriptions are on our little blog example.

Live coding (58:27)
We fill in some code for our blog application using Apollo Server. Apollo Server will use the RestDataSource to communicate with our blog rest service. We also check out GraphiQL.

Q & A (1:15:28)
Some Q & A regarding GraphQL.

Part 2: Academia perspective - How to formalize GraphQL and do analysis

Formalization of GraphQL (1:22:16)
We talk a little about prof. Olaf Hartig and how he is making the first steps into formalizing GraphQL as a language to do analysis on it. We also show how he constructed two algorithms that allows us to solve the query depth problem more effectively.

Note: Some corrections for this part - I was kindly reminded by prof. Hartig that this was a joint venture with prof. Jorge Perez and that he is actually from Sweden.

Caching (1:33:06)
We talk about caching and how graph based analysis could help with that.

The end (1:35:04)
From here on we talk about other challenges and do the rest of the Q&A.

Sample project code: https://gitlab.com/graphql-articles/fri-apollo-graphql

#GraphQL #API #Morioh

PUBLICATION PERMISSIONS:
Original video was published with the Creative Commons Attribution license (reuse allowed)

CREDITS:
Original video source: https://www.youtube.com/watch?v=HkeSJ5zql08
------------------------------------------------------------------------------------
Social Network for Developers: http://bit.ly/2M1cxD2
Developer's Store: http://bit.ly/2L27JNR
Learn Startup: http://bit.ly/2UDotMN  
Learn to code: http://bit.ly/2pN2aXx
Fanpage: http://bit.ly/2LyM4fJ     
Twitter: http://bit.ly/2J7vCS0