lilydocs
HTTP APIWebSocketConsumer
HTTP2 dk okuma

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.

Controller action parçası
#[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.

HIZLI BAŞLANGIÇ
Dokümantasyon
Kaynak kod