lilydocs
HTTP APIWebSocketConsumer
HTTP2 dk okuma

Doğrulama ve özel extractor

Parsing hatalarını iş kurallarından ayırın ve güvenli HTTP hataları döndürün.

Typed extraction, veriyi Rust tipine dönüştürür. Bir alanın boş olmaması, kullanıcının mevcut olması veya iki alanın uyumlu olması gibi iş kuralları ayrıca doğrulanır.

DTO’nun yapısını doğrulama#

DTO
#[derive(serde::Deserialize)]
#[serde(deny_unknown_fields)]
struct CreateUser {
    name: String,
}

deny_unknown_fields uygulamanızın açık tercihidir. Normal Json<T> bütün DTO’larda bu kuralı otomatik etkinleştirmez. Content type uyumsuzluğu, bozuk JSON ve typed dönüşüm hataları extractor tarafından ele alınır.

İş kuralı doğrulama#

Controller örneğindeki action’da adın boş olmadığı kontrol edilir:

Action veya domain servisi içinde
if input.name.trim().is_empty() {
    return Err(HttpApiError::ValidationError("name is required".into()));
}

ValidationError HTTP 422 üretir. Payload string’inin istemciye aynen döneceğini varsaymayın; built-in hatalar güvenli public mesaj sözleşmesini kullanır. Alan bazlı public hata şeması gerekiyorsa özel hata converter’ı tanımlayın.

Yeniden kullanılabilir extractor#

İhtiyaç Trait
Body tüketmeden request parçası doğrulamak FromRequestParts
Aynı parçanın yokluğunu opsiyonel ele almak OptionalFromRequestParts
Body tüketerek yeni bir veri tipi üretmek FromRequest

Özel extractor’ın Rejection türü Into<HttpApiError> sağlamalıdır. Özel body extractor son typed parametre olmalıdır. Request/body referanslarını işlem dışına taşımayın.

Hata türünü doğru seçme#

Durum Tipik HTTP sonucu
Bozuk veri veya typed dönüşüm 400
Desteklenmeyen content type 415
Body sınırının aşılması 413
Örnekteki business validation 422

Lily’nin genişletme noktaları extractor, guard, middleware ve response converter’dır. NestJS anlatım sırası tanıdık gelse de ValidationPipe API’si Lily’nin bir parçası değildir.

Bu sayfanın kaynakları v0.1.0

Anlatım, incelenen framework commit’ine dayanır.

HIZLI BAŞLANGIÇ
Dokümantasyon
Kaynak kod