如何通过REST API更新多个项目的顺序?

Loi*_*ilo 8 rest httprequest

我正在开发一个REST API,用于导航菜单项列表,几乎用于学习目的.在此之前,API中的所有内容都非常简单,因为我只需通过经典/collection/{id}内容修改单个项目.

但是现在我想改变存储在order我的数据库字段中的列表项的顺序,当然我不想为每个菜单项做一个请求.

那么这样做的合适方式/常见的最佳做法是什么?

我可以想象在发送的数据中使用id-order键值对发送PUT请求,/collection但是Laravel(我用来构建API)不允许这样做.我当然可以解决这个限制,但我想有明智的理由认为这是不允许的.

另一个想法是发送PUT请求以/collection/{ids}逗号分隔的ID列表,但为此我还必须发送ID及其订单值的键值列表,这看起来非常多余,因为这也有点脏.

那么实际上最好的方法是什么呢?

Thi*_*ier 3

我建议您使用资源路径定义一条新路线:/collection/reorder。

POST这允许使用元素列表及其新位置的方法发送它。内容看起来像这样:

{
    "element1": 4,
    "element2": 1,
    (...)
}
Run Code Online (Sandbox Code Playgroud)

“element1”是元素的标识符和相应的值,即它的新顺序。

您可以注意到,需要发送到此方法的数据格式可能取决于您在 UI 中用于重新排序列表的工具(例如,用于拖放)。

希望能帮助到你。蒂埃里