0.1.0 • Published 4 years ago

@lcdev/api-fields-middleware v0.1.0

Weekly downloads
-
License
MPL-2.0
Repository
github
Last release
4 years ago

API Fields Middlware

Licensed under MPL 2.0 Build Status npm

Use API Fields easily in Koa.

yarn add @lcdev/api-fields-middleware@0.1
import { ApiField } from '@lcdev/api-fields';

// somewhere, where your model is defined
class EntityA {
  @ApiField()
  publicFieldA: any;

  @ApiField()
  publicFieldB: any;

  privateFieldA: any;
  privateFieldB: any;
}

import { extractApiFieldsMiddleware } from '@lcdev/api-fields-middleware';

// somewhere, where you have a koa router
app
  .get('/foo/bar', extractApiFieldsMiddleware(EntityA), async (ctx, next) => {
    // the body ends up as an object that is, or looks like an 'EntityA'
    ctx.body = new EntityA();

    return next();
  });

This will perform the extract with ApiFields of EntityA, after your router middleware has run. This will only apply if the response is a 200.

Features:

  • Supports extractApiFieldsMiddleware([EntityA]) to imply that the api response is an array of EntityA
  • Supports extractApiFieldsMiddleware({ ... }, true) to pass a "raw" Extraction object to use (you might use getApiFields with an extension here)