正确的方法来执行PATCH upsert请求

时间:2016-10-03 22:28:41

标签: rest upsert http-patch

请求将以下upsert连接到REST API的正确方法是什么?

我正在努力构建一个NoSQL集合,它基于对前端应用程序的最多请求返回。

假设您有以下文件:

{
    'user' : {
        'private_comments': [
            //object available only to user 1
            { 
                'id': 1,
                'bar': 'He is very good',
                '...': '...'
            },
            //object available only to user 2
            { 
                'id': 2,
                'bar': 'He is very bad',
                '...': '...'
            }
        ],
        'public_comments': '' //infos available to all users
    } 
}

需要将元素插入user.private_comments数组。

根据https://tools.ietf.org/html/rfc6902#appendix-A.5,我可以请求替换指令补丁以下数据:

{ 'op': 'replace', 'path': '/user/comments/$index', 'value': 'Actually, he is OK'}

问题在于' $ index'在这种情况下是未知的。

我想出的一个可能的解决方案是创建类似于以下操作的东西:

{ 'op': 'upsert', 'find_by': 'id', 'find': 1, 'path': '/user/comments', 'value': 'Nope, he really sucks' }

但是,实现API的用户不应在PATCH请求中提供id值,因为此值已经可以通过接收令牌访问。我应该简化操作:

{ 'op': 'upsert', 'path': '/user/comments', 'value': 'Nope, he really sucks' }

并在后端处理它,所以当它没有'并且找到'和' find_by'变量我假设' find_by':' id'并且'找到':value_from_token?

另外,我不能在孔文档中进行简单的GET / UPDATE,因为用户没有收到孔文档,因此更新会危及数据。

0 个答案:

没有答案