批量删除,URL过长怎么办?
来源:9-3 【应用】批量删除资源

快斗
2020-07-23
如果批量删除的时候,选择的记录特别多,地址栏中的URL长度超过了限制。该怎么办呢?
2回答
-
课程中的删除api通过url传递id的目的有两个:
第一,是为了演示restful批量删除列表数据时应该如何组织url的结构(例如:api/touristRoutes/(1,2,3,4))。
第二,是为了演示asp.net中如何实现自定义ModelBinder
不过,删除数据太多的话难免会出现你的问题,就是URL太长。所以,我们可以不使用ModelBinder从url中传参,取而代之的是把参数id列表通过delete请求的body中传给api。
请在代码中做以下修改:
action 函数 DeleteByIDs:
1)函数attribute 【HttpDelete】 去掉括号内容
2) 参数 touristIDs去掉前面的ModelBinder所有内容
3)参数 touristIDs的attribute 【FromRoute】改为 【FromBody】
delete请求如下:
这样修改过后,api就不会出现url过长的问题了。
不过,这样的修改也有问题,请思考一下 "DELETE https://localhost/api/touristRoutes" 这个操作从restful的角度该怎么理解呢?按rest的思维方式,这条api的意思应该是“删除全部旅游路线”,而我们实际的操作缺是“批量删除部分选择的旅游路线”,所以从严格意义上来说上面的修改实际上是违反了rest的风格。不过,违反风格不代表不好,关键还是看你的需要。所以,在开发过程中要结合实际,如果选择使用restful开发api的话,能遵守rest标准最好遵守,遵守不了也无所谓,关键是要实现功能需求。
50 -
慕沐7702952
2020-11-29
刚好考虑到这个问题,关于是否使用body感觉争论不一,一方是想要遵守resful风格,一方是从实际问题思考出发,个人感觉还是用body比较爽,毕竟需求是爸爸
00
相似问题