Automating Data Operation APIs with koa-restql

koa‑restql automatically creates full RESTful CRUD endpoints from Sequelize models, mapping each database table to standard GET, POST, PUT, and DELETE routes, handling query filters, pagination, and associations via query strings, and offering middleware or association‑level options for access control, thus eliminating repetitive data‑operation code in Koa backends.

Meituan Technology Team
Meituan Technology Team
Meituan Technology Team
Automating Data Operation APIs with koa-restql

koa-restql is an open‑source tool (GitHub, npm) that automatically generates RESTful CRUD APIs from Sequelize models, greatly reducing the amount of repetitive data‑operation code in backend development.

In typical backend projects, each database table may require four CRUD endpoints, and relationships multiply the number of required APIs, leading to thousands of endpoints and corresponding tests. This article explains how RestQL abstracts these operations.

Solution approach – By mapping database tables directly to HTTP routes, RestQL eliminates the need to manually implement data‑operation APIs. It follows standard RESTful conventions (GET, POST, PUT, DELETE) and supports both list and single‑resource routes.

Supported HTTP verbs

GET (Read), POST (Create), PUT (Create/Update), DELETE (Delete). For methods with a request body, POST and PUT can handle list (array/object) and single (object) payloads.

Usage

Install via npm: npm install koa-restql Then integrate into a Koa application:

const Koa = require('koa');
const RestQL = require('koa-restql');
let app = new Koa();
let restql = new RestQL(sequelize.models);
app.use(restql.routes());

Query string rules

Keys not starting with '_' become where conditions; keys starting with '_' are passed as top‑level Sequelize options (e.g., _limitlimit). Associations can be included using _include with an array of relation names.

Access control

Two methods: a middleware placed before RestQL routes, or configuring restql options on Sequelize associations (e.g., ignore: true or ignore: ['get']).

The article also provides reference links to Koa, Sequelize, and the koa‑restql repository.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

automationNode.jsORMKoaRESTful API
Meituan Technology Team
Written by

Meituan Technology Team

Over 10,000 engineers powering China’s leading lifestyle services e‑commerce platform. Supporting hundreds of millions of consumers, millions of merchants across 2,000+ industries. This is the public channel for the tech teams behind Meituan, Dianping, Meituan Waimai, Meituan Select, and related services.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.