lilydocs
HTTP APIWebSocketConsumer
HTTP2 dk okuma

Yanıtlar ve durum kodları

JSON, düz metin, binary ve özel HTTP yanıtları arasında doğru sözleşmeyi seçin.

Action’ın dönüş tipi, gövdenin nasıl temsil edileceğini belirler. Özellikle doğrudan değer ile Result<T, E> arasındaki farkı göz önünde bulundurun.

Dönüş tipi tablosu#

Action dönüşü Temsil / status
Result<Dto, E> Dto: Serialize; JSON
Json<Dto> / Result<Json<Dto>, E> Açık JSON
Doğrudan String / &str Düz metin
Result<String, E> JSON string
Doğrudan Vec<u8> Binary
Result<Vec<u8>, E> JSON array
PlainText / BinaryData ve Result biçimleri Açık text / binary
NoContent 204, body yok
Created<T> 201, isteğe bağlı Location, DTO JSON
Accepted<T> 202, isteğe bağlı Location, DTO JSON
Created::empty() / Accepted::empty() 201/202, body yok
Created<()> / Accepted<()> JSON null; empty ile aynı değil
() / Result<(), E> Manual/no-representation başarı; kendiliğinden 204 değil
ResponseBuilder Tam response sözleşmesi
StreamingResponse, SseResponse, StaticFileResponse Lazy/özel response sözleşmesi

Oluşturma ve boş yanıt#

Created::new("/users/42", dto) 201, Location ve JSON gövdesi üretir. NoContent 204 için açık seçimdir. Created::empty() gövde oluşturmaz; Created<()> ise JSON null üretir.

Controller action parçası
#[delete("/:id")]
async fn remove(&self) -> Result<NoContent, HttpApiError> {
    // Gerçek uygulamada önce domain service ile silme işlemini tamamlayın.
    Ok(NoContent)
}

Bu parça yalnız response seçimini gösterir; herhangi bir kayıt silmez. Result<(), E> kendiliğinden 204 anlamına gelmez.

Typed body’yi koruyarak ek metadata yazmak için PassthroughResponseContext kullanın. Action veya serialization başarısız olursa staged metadata atılır. Cookie örneği bu yolu tam controller içinde gösterir.

Created, Accepted, NoContent, streaming ve ResponseBuilder gibi kendi status otoritesi olan yanıtların status’ünü passthrough ile keyfi değiştirmeyin.

Manual response#

Raw &mut Response kullanıyorsanız action manual/unit dönüş yolunda olmalıdır. Raw response ile typed return karıştırılmaz. Tam response sözleşmesi için ResponseBuilder, dosyalar için StaticFileResponse, event’ler için SseResponse kullanabilirsiniz.

Hata dönüşümü#

Action’ın error türü IntoResponse + Send sağlayabilir; her domain hatası HttpApiError olmak zorunda değildir. Bir uygulama hatasının HTTP yanıtına başarıyla yazılması teknik response-write hatası sayılmaz. Bir sonraki sayfa özel hata sözleşmesini gösterir.

Bu sayfanın kaynakları v0.1.0

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

HIZLI BAŞLANGIÇ
Dokümantasyon
Kaynak kod