Running an API without code
With GraphQL Serve you can have a full featured GraphQL CRUD API with subscriptions and data synchronization running in just a few seconds without writing a single line of code - all you need is a data model .graphql
file.
GraphQL Serve is a CLI tool that leverages the power of Graphback to generate a codeless Node.js GraphQL API complete with schema and CRUD resolvers and an in-memory MongoDB database.
#
InstallationYou can install graphql-serve
globally with npm:
or with yarn:
or run it with npx:
#
UsageThe bare minimum you need is a GraphQL file with your data models. Create a file called Note.graphql
and add the following:
The @model
annotation indicates that Note
is a data model and Graphback will generate resolvers, a CRUD service and data source for it. You can learn how to build more complex data models in Data Model.
#
Running your codeless GraphQL serverTo start your server, run the following command from the same directory as Note.graphql
:
This will start a GraphQL server on a random port using the Note.graphql
data models we just added.
You can customise the directory of the data models:
You can also specify where to load the data models from with a Glob pattern:
You can specify which port to start the server on:
#
CRUDGraphQL Serve creates an in-memory CRUD API to give you queries, mutations and subscriptions for all your models using API patterns from GraphQLCRUD.
Visit the CRUD section for an overview of the CRUD specification and guides on how to perform CRUD operations on your data.
#
Enable Data SynchronizationGraphQL Serve can also operate on data sync models. Under the hood this uses the Data Sync package.
To enable data synchronization, all we need to do is enable datasync capabilities on our models via the @datasync
annotation.
For the Note
model defined above, this would look like:
Once we have a model with datasync capabilities, we can run our GraphQL server by enabling data synchronization as shown below:
Conflict resolution strategies for datasync enabled models can be specified via the --conflict option:
This defaults to ClientSideWins, if unset.
The TTL for delta tables, can also be set using the --deltaTTL option:
This value defaults to 172800
when unused
#
Printing your GraphQL schemaGraphback receives your data models as an input and processes them to generate a GraphQL schema complete with additional types, queries, mutations and subscriptions.
GraphQL Serve allows you to print the resulting schema in your terminal with the print-schema
subcommand:
#
Usage InformationThis information is also provided with the command itself:
For the serve
command:
Also for print-schema
command: