RestFul API 实践中,如何定义批量操作API?
比如资源 product 的资源路由和删除操作的路由和url大概长下面这样
// 路由定义
Route::resource('products', Product::class);
// 请求方法和url
delete /products/1
控制器会自动注入要删除的资源的 id, 到这里都没问题。
// 控制器方法
public function destroy($id){}
假设我要定义一个 RestFul 风格的批量删除Api, 应该如何定义路由控制器和Url比较好呢 ?
DELETE /products
批量操作的时候一般就使用 POST 方式请求
可以类似于 /products/batch
增加个 method 参数
method: create, update, delete
剩下的参数根据情况传需要的内容就可以了
RestFul 是一种风格 而不是一种约束 我是觉得楼上的方法都可行
首先,批量操作不属于 restful 标准,所以你只需要选择一个不被 restful 占用的 api 并自行定义即可。例如,PUT /resources 不属于 restful 约束的范围,可以自由使用。在
PUT /resources
中加入类似下面的 body 就可以了.另外批量删除比较特殊, 存在不需要表单的批量删除的形式, 可以使用没有被 restful 占用的
DELETE /resources
接口. 传参可以选择 ?ids=xxx,xxx也可以选择 json body {ids: xxx}, 根据实际情况选择