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.
#[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.
Header ve cookie ekleme#
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.