批量删除,URL过长怎么办?

来源:9-3 【应用】批量删除资源

快斗

2020-07-23

如果批量删除的时候,选择的记录特别多,地址栏中的URL长度超过了限制。该怎么办呢?

写回答

2回答

阿莱克斯刘

2020-07-24

课程中的删除api通过url传递id的目的有两个:

  • 第一,是为了演示restful批量删除列表数据时应该如何组织url的结构(例如:api/touristRoutes/(1,2,3,4))。

  • 第二,是为了演示asp.net中如何实现自定义ModelBinder

不过,删除数据太多的话难免会出现你的问题,就是URL太长。所以,我们可以不使用ModelBinder从url中传参,取而代之的是把参数id列表通过delete请求的body中传给api。

请在代码中做以下修改:

  1. action 函数 DeleteByIDs:

    1)函数attribute 【HttpDelete】 去掉括号内容

    2) 参数 touristIDs去掉前面的ModelBinder所有内容

    3)参数 touristIDs的attribute 【FromRoute】改为 【FromBody】

    //img.mukewang.com/szimg/5f19ee87093801f209640260.jpg

  2. delete请求如下:

    //img.mukewang.com/szimg/5f19ef64092be0ab14020568.jpg


这样修改过后,api就不会出现url过长的问题了。

不过,这样的修改也有问题,请思考一下 "DELETE https://localhost/api/touristRoutes" 这个操作从restful的角度该怎么理解呢?按rest的思维方式,这条api的意思应该是“删除全部旅游路线”,而我们实际的操作缺是“批量删除部分选择的旅游路线”,所以从严格意义上来说上面的修改实际上是违反了rest的风格。不过,违反风格不代表不好,关键还是看你的需要。所以,在开发过程中要结合实际,如果选择使用restful开发api的话,能遵守rest标准最好遵守,遵守不了也无所谓,关键是要实现功能需求。






5
0

慕沐7702952

2020-11-29

刚好考虑到这个问题,关于是否使用body感觉争论不一,一方是想要遵守resful风格,一方是从实际问题思考出发,个人感觉还是用body比较爽,毕竟需求是爸爸

0
0

.Net 开发电商后端API 从0到精通RESTful

. Net 实战+RESTful思想纵深课程,开发优雅RESTful风格API。

977 学习 · 547 问题

查看课程