/framework

A config driven NodeJS framework implementing json:api and GraphQL

Primary LanguageJavaScriptMIT LicenseMIT


jagql

Build Status codecov npm (scoped) Dependencies Status Greenkeeper badge



A resource driven framework to set up a {json:api} + GraphQL endpoint in record time.

Motivation

Let us look at these great articles written by some very experiences developers -

  1. Phil Sturgeon says if you use json:api you do not need GraphQL
  2. Bill Doerrfeld writes about the benefits of json:api
  3. Jorge says json:api is a simple alternative to GraphQL
  4. Jeremy Sherman says he is not impressed by json:api and GraphQL is better
  5. Brandur says GraphQL is the next frontier in Web Developement

If you ask me, I'd say -

And in fact, some of the most used public APIs like Github have both REST and GraphQL.

jagql lets you build a backend with both {json:api} and GraphQL support really really fast.

About this Fork

NOTE: This is a fork of holidayextra's jsonapi-server We have merged a lot of pending PRs on the original repo that we felt we would gain advantage from. The original project was coing a bit too slowly for our needs.

Differences from upstream

primaryKey is configurable

In upstream, keys are by default uuid and are taken from DB, if generateId = true We instead use a different property primaryKey, whose possible values are

  • uuid : Uses UUID v4 (generated from the client)
  • autoincrement : Uses AUTOINCREMENT integers

*In future there might be other types of primaryKeys if required.

relationship key type is configurable

When creating a field, you can state how to relate it

jsonApi.define({
  ... 
  attributes: {
    ... 
    author: jsonApi.Joi.one('people').uidType('uuid')
    ...
  }
})

You'd want to use our version of jsonapi-store-[*] plugins with this as the original versions will not be compatible with this

The old readme here is verbatim copy of the original project