GraphQL API: from small component on some pages to the SPA which includes the big part of application functionality • Real issues we faced during creating and supporting our GraphQL API • Issues I discussed with people on afterparties • Unresolved issues and my ideas and vision on designing the GraphQL API • Why I love GraphQL ❤ 8
of GraphQL API development for our SPA • Made GraphQL API public for our customers • Integrated with a number of external GraphQL APIs • Drunk about 100 bottles of beer discussing GraphQL on afterparties 9
of GraphQL API development for our SPA • Made GraphQL API public for our customers • Integrated with a number of external GraphQL APIs • Drunk about 100 bottles of beer discussing GraphQL on afterparties 10
of GraphQL API development for our SPA • Made GraphQL API public for our customers • Integrated with a number of external GraphQL APIs • Drunk about 100 bottles of beer discussing GraphQL on afterparties • It was almost one year ago 11
of GraphQL API development for our SPA • Made GraphQL API public for our customers • Integrated with a number of external GraphQL APIs • Drunk about 100 bottles of beer discussing GraphQL on afterparties • It was almost one year ago 12
generates a token for access to the API • It’s still may work for login/password authentication • It would be harder to implement authentication via OAuth since we need to process redirects • It’s hard to update all the data after successful authentication • Maybe, this still makes sense. 73
access to some fields • The same result for not found and access denied errors • No error messages on why we can’t get access to a field • For collections we use null when user doesn’t have access and empty list [] if there are no items • This is more about API design not about the implementation 85
access to some fields • The same result for not found and access denied errors • No error messages on why we can’t get access to a field • For collections we use null when user doesn’t have access and empty list [] if there are no items • This is more about API design not about the implementation • GraphQL spec knows how to resolve this issue but Ruby implementation does not. 86
and care about all members of the team • Graphql is a great convention for communication between developers • It does not affect you business logic • It resolver some issues and makes a new one • No worries about formats and versioning • Fun !!!! 136
Working with IDs • Visibility • Supporting deprecated types and fields • Converting GraphQL schema from AR schema • Other approaches using GraphQL • Using GraphQL queries with REST endpoint (e.g. Facebook API) • Monitoring GraphQL schema • Tests for GraphQL schema • etc... 137
Working with IDs • Visibility • Supporting deprecated types and fields • Converting GraphQL schema from AR schema • Other approaches using GraphQL • Using GraphQL queries with REST endpoint (e.g. Graph API) • Monitoring GraphQL schema • Tests for GraphQL schema • etc... 138