Tìm các phương pháp hay nhất khi làm việc với các tuyến lồng nhau trong .NET Core MVC.NETCORE MVC - Cách làm việc với các tuyến lồng nhau, nhiều tham số
Hãy nói rằng CampusController.cs
làm việc với một mô hình cơ sở:
[Route("api/campus/")]
public class CampusController : Controller
{
...
[HttpGet]
[Route("{campusId}")]
public IActionResult GetCampusInfo ([FromQuery]int campusId) { ... }
}
Và BuildingController.cs
làm việc với một người mẫu trẻ:
[Route("api/campus/{campusId}/building")]
public class BuildingController : Controller
{
...
[HttpGet]
[Route("{buildingId}")]
public IActionResult GetBuilding ([FromQuery]int buildingId) { ... }
[Route("{buildingId}/")]
public IActionResult GetBuilding ([FromQuery]int buildingId) { ... }
....
(more Action Methods)
}
Nếu buildingId
bản đồ trực tiếp đến cơ sở dữ liệu nó có thể lấy ra ngay cả khi cung cấp campusId
không phải là cha mẹ. Để giữ cho URL sạch sẽ khi gọi /api/campus/{campusId}/building/{buildingId}
Tôi muốn xác thực {campusId}
và trả về mã IActionResult 4xx nếu mã đó không hợp lệ. Phải có cách tốt hơn là bao gồm logic xác thực trong mọi Phương thức hành động bên trong BuildingController
.
- Có cách nào để xếp nhiều phương thức Hành động trên các bộ điều khiển khác nhau không? Vì vậy, một phương pháp xác nhận trên
CampusController
sẽ được gọi đầu tiên và lần lượt gọi một phương thức trênBuildingController
? - Có cách nào để xác minh mức điều khiển
campusId
có thể đoản mạch và trả về ActionResult nếu xác thực không thành công không?
EDIT: Khi tôi tham chiếu đến logic xác thực, tôi có nghĩa là tín hiệu API; không phải logic nghiệp vụ thực sự xác định nếu campusId là/không hợp lệ.
Cảm ơn trước!
Giải pháp này có ý nghĩa nhất đối với tôi vì toàn bộ mô hình 'khuôn viên 'không cần nằm trong lớp' BuildingController'; thay vì chỉ cần kiểm tra xác thực đơn giản, cần phải được tạo trước. Cảm ơn! –
Tại sao không sử dụng FromRoute thay vì FromQuery? – 000
@Sam 'FromRoute' là chính xác. Tôi vừa sao chép các thông số từ OP. đó là một sự giám sát về phía tôi. Sẽ nâng cấp. Cảm ơn vì chỉ ra điều ấy. – Nkosi