7-3.ASP.NET Core Web API 入門教學 - 刪除多筆指定資料

ASP.NET Core Web API 入門教學

影片講解


在Restful風格裡面,對於刪除多筆資料似乎沒有特別去規範說網址格式是如何。所以如果要符合規範就有可能要在前端去跑迴圈,一筆一筆的送出刪除的Resqust,那這樣鐵定不是一個好的方式,因為如果同時要刪除100資料那就要Resqust一百次,不僅會造成伺服器的負擔,效率上也不會太好。

因此或許我們可以跳脫規範,自己設計一個能夠接受的格式來進行多筆指定資料的刪除動作。那我們路由的部分就設為[HttpDelete("list/{ids}")]。接受值得部分就單純接收字串就好public List<Guid> Delete(string ids)

接著我們再利用JsonSerializer,從string將他轉成List。

List<Guid> deleteList = JsonSerializer.Deserialize<List<Guid>>(ids);

那位什麼不一開始就接收List<Guid> ids呢?其實是可以的,但由於在預設中並沒有針對路由進行List轉換的程式,因此會無法正確執行轉換而415失敗,那這邊解決的部分可透過自行撰寫轉換程式即可解決,但今天只是進行簡單的示範應用,所以就不先教這一部分。

接著我們在用Contains,把所有包含在其中的id都給撈出來,最後再使用RemoveRange進行刪除就完成了,以下完整程式碼。

[HttpDelete("list/{ids}")]
public List<Guid> Delete(string ids)
{
    var deleteList = JsonSerializer.Deserialize<List<Guid>>(ids);
    var delete = (from a in _todoContext.TodoLists
                  where deleteList.Contains(a.TodoId)
                  select a).Include(c => c.UploadFiles);
    _todoContext.TodoLists.RemoveRange(delete);
    _todoContext.SaveChanges();
    return deleteList;
}

以上就是這篇的簡單示範,想看詳細操作的話可以看影片。

新手分享學習成果,若有錯誤,煩請告知修正,感謝🙏

參考文章: 
如何在 .NET 中序列化和還原序列化 (封送處理和 unmarshal) JSON




Copyright © 凱哥寫程式 2022 | Powered by TalllKai ❤