Hiệu chỉnh action Edit để xử lý lỗi không tìm thấy tác vụ

Một phần của tài liệu Tạo ứng dụng ASP mvc (Trang 41 - 44)

Phương thức Edit dành cho GET Request không có mã để kiểm tra lỗi không tìm thấy tác vụ, và điều đó có nghĩa là khi trình duyệt gởi request có tham số id không tồn tại và như vậy chúng ta đang cập nhật một tác vụ không có thật, và lúc đó kết quả sẽ trả về như sau:

Để làm cho action Edit có thể xử lý được tình huống nói trên, ta cần điều chỉnh đoạn mã bên trong nó để kiểm tra xem thử phương thức Find của đối tượng DbContext trả về kết quả null hay không, nếu có thì cần phải điều hướng đến một thông báo lỗi hợp lệ, hơn là trả về lỗi, và mã điều chỉnh sẽ

như sau:

public ActionResult Edit(int id) {

Task task = db.Tasks.Find(id); if(task == null) { return HttpNotFound(); } return View(task); }

HttpNotFound, phương thức này sẽ trả về lỗi 404 cho trình duyệt.

Khi lập trình với các HTTP Verbs (GET, POST, PUT, DELETE..) bạn cần phải chú ý để có các thao tác phù hợp và tránh gây ra các lỗi về bảo mật. Đối với GET request, bạn không nên thay đổi hoặc sửa xóa dữ liệu khi xử lý các GET request, bởi nó sẽ tạo ra lỗ hổng về bảo mật (chúng tôi sẽ sớm có bài viết về vấn đề này). Thay đỗi dữ liệu khi xử lý GET request cũng vi phạm các quy tắc lập trình với giao thức HTTP và vi phạm kiến trúc REST, trong đó nó quy định rằng các GET request không nên làm thay đổi trạng thái của ứng dụng. Nói một cách khác, phương thức xử lý GET request phải là một phương

thức không tạo ra ảnh hưởng lề (side effects).

Một phần của tài liệu Tạo ứng dụng ASP mvc (Trang 41 - 44)