Hide menu

A Declarative Approach to GraphQL Schema Wrapping

This project is designed for master students.

Description: After developing and using it internally for three years, in 2016, Facebook released a specification and a reference implementation of a framework, called GraphQL, that introduces a new type of Web-based data access interfaces. Two core components of this framework are a form of schemas and a corresponding query language for expressing the data retrieval requests issued to GraphQL-aware Web servers. Since its release, GraphQL has become highly popular and is employed by an increasing number of users including Coursera, Twitter, Github, and Pinterest. In fact, many organizations and companies increasingly use GraphQL for both their internal APIs to all their data and their public Web APIs that can be used by external third-party applications and that are limited in what data they expose. A common approach to build a public GraphQL server for the latter types of GraphQL APIs is to simply make this server access the internal GraphQL API by means of GraphQL schema wrapping, which is conceptually similar to the notion of views in databases. However, in contrast to database views which are defined declaratively using a query language such as SQL, existing approaches to implement GraphQL schema wrapping typically require developers to write code in a programming language such as JavaScript. The overall research question to be studied in this thesis project is whether GraphQL schema wrapping can also be implemented based on the same idea used for implementing database views; namely, by means of a declarative language. To address this question, the aim of the project is to develop an approach that allows users to define in a declarative language how a given GraphQL API, with the GraphQL schema that it supports, is meant to be wrapped and exposed as another GraphQL API that has its own, slightly different GraphQL schema. To this end, the approach first has to be defined conceptually, which includes specifying both a means (or a language) via which the wrapping definitions can be described and an algorithm to automatically convert such wrapping definitions into runnable program code. Thereafter, a prototype of the approach has to be implemented and tested, and the approach has to be compared to an existing, non-declarative approach.

Prerequisites: Students who want to work on this project should have read a course on Database Technology. Additionally, good programming experience is highly recommended (ideally using JavaScript); in particular, experience with the development of (small) Web applications is beneficial.

Contact: Olaf Hartig.

Page responsible: Olaf Hartig
Last updated: 2021-10-28