如何通过一次PUT请求在Web Api中更新多条记录?URL参数该填什么?
嘿,针对你想通过一次PUT请求批量更新多条AuditChecklist记录的需求,我来给你几个行业常用的方案参考:
使用批量标识替换{id}
最直观的做法是用bulk或batch这类语义明确的词替换掉URL里的{id},最终URL变成:http://localhost:4211/api/AuditChecklist/bulk
这种方式逻辑清晰,后端看到bulk就知道这是批量更新请求,你只需要在请求体里传入包含所有待更新记录的数组(每条记录要带自身的id以及需要更新的字段)就行。在URL中传递ID列表
如果希望把要更新的记录ID直接放在URL里,可以用逗号分隔多个ID替换{id},比如:http://localhost:4211/api/AuditChecklist/1,2,3,4
不过要注意这种方式有URL长度限制,适合批量更新的记录数量不多的场景,后端需要解析这个逗号分隔的ID串,再结合请求体里对应的更新数据进行处理。直接省略{id},针对整个资源集合
你也可以直接去掉URL里的{id},用http://localhost:4211/api/AuditChecklist作为批量更新的URL。这时候后端需要根据请求体的格式区分单条/批量更新:如果请求体是单个对象,按单条更新处理;如果是对象数组,就执行批量更新逻辑。
需要说明的是,RESTful规范里并没有统一的批量更新标准,以上几种都是实际项目中常用的方案,其中第一种用bulk的方式语义最清晰,也能避免URL长度限制的问题,比较推荐。
内容的提问来源于stack exchange,提问作者Taufik Shaikh

