CakePHP 4-自定义请求和响应格式

CakePHP 4-自定义请求和响应格式,cakephp,cakephp-4.x,Cakephp,Cakephp 4.x,对于一个新项目,我希望使用CakePHP 4作为REST后端,并使用Vue.js前端。 现在,Cake使用嵌套数据结构,而vue.js使用平面数据结构。 我现在的计划是在后端转换数据 示例格式: CakePHP { "user": { "id": 1, "name": "Peter Maus" "articles

对于一个新项目,我希望使用CakePHP 4作为REST后端,并使用Vue.js前端。
现在,Cake使用嵌套数据结构,而vue.js使用平面数据结构。
我现在的计划是在后端转换数据

示例格式:

CakePHP
{
    "user": {
        "id": 1,                    
        "name": "Peter Maus"
        "articles" : [
            {
                "id": 15,
                "title": "First Post",
            }
        ]
    },
    
}

Vue.js
{
    "user": {
        "id": 1,                    
        "name": "Peter Maus"
        "articles" : [ 15 ]
    },
    "articles": [
        {
            "id": 15,
            "title": "First Post",
        }
    ]
}
所以基本上不只是发送json

$this->viewBuilder()->setOption('serialize', ['user']);  
我想先“转换数据结构”,然后作为json发送

我现在根据文件发现了以下转换可能性:

请求-从vue转换为cake
我已经看到您可以使用自己的解析器。 但是我仍然使用json作为响应格式,我不想覆盖标准json格式化程序

响应-从蛋糕转换为vue
想法:

  • 我看过“”,但我不确定它是否适合此用途

  • 扩展ViewBuilder并编写我自己的serialize()函数。
    我该如何包含我自己的ViewBuilder,这可能吗

  • 在父实体中编写解析器函数,我的所有实体都从该父实体继承。并在序列化数据之前调用该解析函数

我可能需要访问实体关系来动态重组数据,包括请求和响应。

什么是合理的方法?

我对Vue.js不太熟悉,所以我不得不问这个问题。Vue.js是否确实需要这种格式才能工作,或者这是您的应用程序特有的格式?使用平面数据结构是最好的做法。至少如果你使用vuex。您可以将其想象为前端数据存储。如果您有重复的对象,您将遇到麻烦。如果两个父对象具有相同的子对象,则嵌套数据可能会发生这种情况。