Path, query ve header
İstek parçalarını typed parametrelerle okuyun; eksik ve bozuk değerleri birbirinden ayırın.
Extractor’lar HTTP isteğini action’ın ihtiyaç duyduğu tiplere dönüştürür. Path, query ve header okumak request body’sini tüketmez.
Path ve query#
Path<T> route parametrelerini, Query<T> query string’i Serde ile deserialize eder. DTO alan adları route/query adlarıyla eşleşir. Controller örneği tam dosyayı gösterir.
#[get("/:id")]
async fn read(
&self,
Path(path): Path<UserPath>,
Query(query): Query<UserQuery>,
) -> Result<UserView, HttpApiError> {
Ok(UserView {
id: path.id,
name: query.language.unwrap_or_else(|| "tr".into()),
})
}UserPath, UserQuery ve UserView tanımları bağlantıdaki örnektedir. Tekrarlı query anahtarları için çoklu değere uygun DTO seçin. Path decoding strict’tir; uygunsuz parametre reddedilir.
Header ve opsiyonellik#
TypedHeader<T> bir headers::Header decoder’ı kullanır. Gerekli header yoksa veya biçimi bozuksa istek reddedilir. Option<TypedHeader<T>> yalnız yokluk halinde None verir; bozuk değeri geçerli saymaz.
Diğer request parçaları#
| Extractor | Kullanım |
|---|---|
RequestCookies |
Cookie jar’ını okumak; get ayrıca hata döndürebilir |
Principal |
Daha önce doğrulanmış kimliği almak; yoksa 401 |
Option<Principal> |
Kimlik varsa almak |
Local<T> |
Request-local değerin owned clone’unu almak |
Option<Local<T>> |
Local değer yoksa None almak |
ClientIp |
Transport’un hesapladığı güvenilir istemci IP’si |
Service<T> |
Aktif request scope’tan servis çözmek |
ExecutionCancellation |
İsteğin durdurulma sinyalini gözlemek |
Büyük local değerlerde Local<Arc<T>> tercih edin. Gerekli Local<T> bulunamaması iç durum hatasıdır. Principal extractor’ı kimlik doğrulamaz; guard’ın doğruladığı kimliği okur.
Parametre sırası#
Önce request-parts ve servis parametreleri, ardından en fazla bir body consumer, son olarak izin verilen raw request/response capability’leri gelir. Body ownership sayfası bu sıranın neden önemli olduğunu açıklar.
Bu sayfanın kaynakları v0.1.0
Anlatım, incelenen framework commit’ine dayanır.