Xử lý các tham số route GUID tùy chọn và nullable với các ràng buộc route có sẵn trong ASP.NET Core.
Mục lục
Mục lục
Đây là bài đồng hành cho ASP.NET Core từ bài viết gốc về NullableGuidConstraint cho ASP.NET MVC & WebApi.
Bài viết gốc triển khai một ràng buộc cho cả ASP.NET MVC truyền thống và Web API. ASP.NET Core đã hợp nhất các mô hình lập trình này và bao gồm sẵn ràng buộc route [guid](https://learn.microsoft.com/aspnet/core/fundamentals/routing#route-constraints), nên ràng buộc tương thích tùy chỉnh không còn cần thiết trong các ứng dụng hiện đại.
Tham số GUID Nullable Tùy chọn
Kết hợp ràng buộc guid có sẵn với đánh dấu route tùy chọn:
[HttpGet("customers/{id:guid?}")]
public IActionResult Get(Guid? id)
{
return id is null
? Ok("Return all customers")
: Ok($"Return customer {id}");
}
Route này khớp với cả hai:
/customers
/customers/0f8fad5b-d9cb-469f-a165-70867728950e
Nó không khớp với giá trị không phải GUID như:
/customers/not-a-guid
Tham số GUID Bắt buộc
Xóa ? khi route yêu cầu một GUID:
[HttpGet("customers/{id:guid}")]
public IActionResult Get(Guid id)
{
return Ok($"Return customer {id}");
}
Minimal APIs
Cú pháp ràng buộc tương tự hoạt động với trình xử lý route Minimal API:
app.MapGet("/customers/{id:guid?}", (Guid? id) =>
{
return id is null
? Results.Ok("Return all customers")
: Results.Ok($"Return customer {id}");
});
Ràng buộc so với Xác thực
Các ràng buộc route giúp lựa chọn điểm cuối. Chúng không thay thế việc xác thực các quy tắc kinh doanh.
Sử dụng {id:guid} khi đường dẫn không phải GUID không nên chọn điểm cuối. Xác thực các quy tắc như liệu GUID có tồn tại, được phép, hoặc không phải là Guid.Empty bên trong điểm cuối hoặc tầng ứng dụng.
Ràng buộc chỉ áp dụng cho phần của URL mà routing thấy, đó là Request.Path chứ không phải toàn bộ URL đến. Tham chiếu Đường dẫn Yêu cầu ASP.NET Core giải thích cách các thành phần khác được hiển thị.
Đối với ASP.NET MVC và Web API truyền thống, bao gồm ràng buộc tùy chỉnh dùng chung NullableGuidConstraint, xem bài viết gốc.
Viết bởi Sebastian Nilsson



