如何处理Strapi中的自定义数据创建

问题描述 投票:0回答:1

我有一个外部API将数据发布到我的项目。我想将项目移至Strapi。但是,当然,该外部POST的形状与Strapi模型的数据创建端点不匹配。它也是XML格式,因此我需要首先对其进行解析,并且需要对传入的数据进行突变以更好地与模型匹配。应该怎么去。

我的想法包括:

  1. 创建用于检查传入数据并对其进行建模以匹配我的模型的中间件
  2. 创建指向处理数据的控制器并根据代码创建模型的路由。我在文档中找不到howto时遇到了麻烦,但我想可能是:strapi.query('myModel').create({})

我很想听听熟悉Strapi的人的一些想法和概念。

strapi
1个回答
0
投票

所以是这个问题的答案。

您将必须使用此概念-https://strapi.io/documentation/3.0.0-beta.x/concepts/controllers.html#core-controllers

自定义create控制器功能。

并且在函数开始时,您将必须检查ctx.request.body的格式。

如果内容具有XML格式,在这种情况下,您将必须将其转换为JSON。

Path — api/**/controllers/**.js

const { parseMultipartData, sanitizeEntity } = require('strapi-utils');

module.exports = {
  /**
   * Create a record.
   *
   * @return {Object}
   */

  async create(ctx) {
    // if ctx.request.body is XML
    // ctx.request.body = convertXMLtoJSON(ctx.request.body);
    // you will have to find a code that convert XML to JSON
    // and simply add id in this function

    let entity;
    if (ctx.is('multipart')) {
      const { data, files } = parseMultipartData(ctx);
      entity = await strapi.services.restaurant.create(data, { files });
    } else {
      entity = await strapi.services.restaurant.create(ctx.request.body);
    }
    return sanitizeEntity(entity, { model: strapi.models.restaurant });
  },
};
© www.soinside.com 2019 - 2024. All rights reserved.