Vulcain is a brand new protocol using HTTP/2 Server Push to create fast and idiomatic client-driven REST APIs. An open-source gateway server that you can put on top of any existing web API to instantly turn it into a Vulcain-compatible one is also provided! It supports hypermedia APIs but also any "legacy" API by documenting its relations using OpenAPI. The protocol has been published as an Internet-Draft that is maintained in this repository. A reference, production-grade, implementation gateway server is also available in this repository. It's free software (AGPL) written in Go. A Docker image is provided. Current solutions for these problems (GraphQL, JSON:API's embedded resources and sparse fieldsets, etc.) are smart network hacks for HTTP/1. But these hacks come with (too) many drawbacks when it comes to HTTP cache, logs and even security. Fortunately, thanks to the new features introduced in HTTP/2, it's now possible to create true REST APIs fixing these problems with ease.

Features

  • The Fields HTTP header allows the client to ask the server to return only the specified fields of the requested resource
  • Alternatively to HTTP headers, the preload query parameter can be used
  • Multiple Fields HTTP headers can be passed
  • Alternatively to HTTP headers, the fields query parameter can be used to filter resources
  • Map a non-hypermedia API using OpenAPI
  • Caddy web server module

Project Samples

Project Activity

See All Activity >