How To Remove Unwanted Data Like CreatedAt, UpdatedAt, CreatedBy from the API response

Create a file in the folder /middlewares called flatten-api-response.js

function flattenArray(obj) {
  return obj.map(e => flatten(e));
}

function flattenData(obj) {
  return flatten(obj.data);
}

function flattenAttrs(obj) {
  let attrs = {};
  for (var key in obj.attributes) {
    attrs[key] = flatten(obj.attributes[key]);
  }
  return {
    id: obj.id,
    ...attrs
  };
}

function flatten(obj) {
  if(Array.isArray(obj)) {
    return flattenArray(obj);
  }
  if(obj && obj.data) {
    return flattenData(obj);
  }
  if(obj && obj.attributes) {
    return flattenAttrs(obj);
  }
  for (var k in obj) {
    if(typeof obj[k] == "object") {
      obj[k] = flatten(obj[k]);
    }
  }
  return obj;
}

async function respond(ctx, next) {
  await next();
  if (!ctx.url.startsWith('/api')) {
    return;
  }
}

module.exports = () => respond;

Then open up /config/middlewares.js and paste this in at the end.

  {
    resolve:'middlewares/flatten-api-response.js'
  }

If you don’t want to do all of that then look at Transformer | Strapi Market which will do this for you!

2 Likes