0Pricing
Learn Rust Coding · Ders

Çıkarıcılar

İstekleri ayrıştırın

Çıkarıcılar, CoddyKit'te ücretsiz bir Learn Rust Coding dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Learn Rust Coding öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn Rust Coding kursu toplamda 4 dersten oluşur.

Çıkarıcı nedir?

Çıkarıcı, isteğin bir bölümünü sizin için alıp çıkaran bir işleyici parametresidir. Axum, parametre türlerini inceler ve bunları doldurur.

  • Elle istek ayrıştırma gerekmez
  • Tür odaklı ve birleştirilebilirdir

Path çıkarıcısı

Path, dinamik URL segmentlerini yakalar. İçindeki tür, segmentin nasıl ayrıştırılacağını belirler.

use axum::extract::Path;

async fn user(Path(id): Path<u32>) -> String {
    format!("user {}", id)
}

Birden çok yol parametresi

Bir demet çıkararak birden fazla bölümü yakalayın. Sıra, yol kalıbıyla eşleşir.

use axum::extract::Path;

async fn item(Path((cat, id)): Path<(String, u32)>) -> String {
    format!("{} / {}", cat, id)
}

Sorgu çıkarıcısı

Query, URL sorgu dizesini serde kullanarak bir yapıya serileştirmeyi kaldırır. Filtreler ve sayfalama için oldukça kullanışlıdır.

use axum::extract::Query;
use serde::Deserialize;

#[derive(Deserialize)]
struct Page { page: u32 }

async fn list(Query(p): Query<Page>) -> String {
    format!("page {}", p.page)
}

JSON gövdesi çıkarıcısı

Json, istek gövdesini bir yapıya serileştirmeyi kaldırır. Yapı, Deserialize türetmelidir.

use axum::Json;
use serde::Deserialize;

#[derive(Deserialize)]
struct NewUser { name: String }

async fn create(Json(u): Json<NewUser>) -> String {
    format!("created {}", u.name)
}

Üst bilgi çıkarıcısı

Üst bilgilere HeaderMap çıkarıcısı veya türü belirlenmiş üst bilgi çıkarıcılarıyla erişin. Kimlik doğrulama belirteçleri için kullanışlıdır.

use axum::http::HeaderMap;

async fn show(headers: HeaderMap) -> String {
    match headers.get("x-api-key") {
        Some(v) => format!("key: {:?}", v),
        None => "no key".to_string(),
    }
}

Çıkarıcıların sırası önemlidir

Json gibi gövdeyi tüketen çıkarıcılar, gövde yalnızca bir kez okunabildiği için parametre listesinde son sırada yer almalıdır.

use axum::{Json, extract::Path};
use serde::Deserialize;

#[derive(Deserialize)]
struct Body { value: i32 }

async fn h(Path(id): Path<u32>, Json(b): Json<Body>) -> String {
    format!("{} {}", id, b.value)
}

Çıkarma işlemini yalın Rust ile modelleme

Çıkarma, türü belirlenmiş verileri bir istekten ayrıştırmaktan ibarettir. Burada sorguya benzeyen bir dizeyi sayılara serileştirmeyi kaldırıyoruz.

fn parse_query(q: &str) -> Option<u32> {
    q.strip_prefix("page=")?.parse().ok()
}

fn main() {
    println!("{:?}", parse_query("page=3"));
    println!("{:?}", parse_query("bad"));
}

İsteğe bağlı çıkarma

Bir çıkarıcıyı Option içine alarak hatayı kritik olmaktan çıkarın. Eksik veya geçersiz bir değer, hata yanıtı yerine None üretir.

use axum::extract::Query;
use serde::Deserialize;

#[derive(Deserialize)]
struct Filter { q: String }

async fn search(filter: Option<Query<Filter>>) -> String {
    match filter {
        Some(Query(f)) => f.q,
        None => "no filter".to_string(),
    }
}

Reddetmeler

Bir çıkarıcı başarısız olduğunda, HTTP hata yanıtına dönüşen bir reddetme döndürür. Örneğin geçersiz JSON otomatik olarak 422 üretir.

use axum::extract::rejection::JsonRejection;
use axum::Json;

async fn create(body: Result<Json<i32>, JsonRejection>) -> String {
    match body {
        Ok(Json(n)) => format!("ok {}", n),
        Err(_) => "bad body".to_string(),
    }
}

Çıkarıcıları birleştirme

Bir işleyici aynı anda birçok çıkarıcı kullanabilir. Axum, her birini isteğin ilgili bölümünden doldurur.

use axum::{Json, extract::{Path, Query}};
use serde::Deserialize;

#[derive(Deserialize)]
struct Q { sort: String }
#[derive(Deserialize)]
struct B { name: String }

async fn h(Path(id): Path<u32>, Query(q): Query<Q>, Json(b): Json<B>) -> String {
    format!("{} {} {}", id, q.sort, b.name)
}

Hızlı Kontrol

Çıkarıcılarla ilgili anlayışınızı sınayın.

Özet

İstekleri çıkarıcılarla ayrıştırmayı öğrendiniz:

  • URL bölümleri için Path, sorgu dizesi için Query
  • Gövde için Json (son sırada olmalıdır)
  • Üst bilgiler için HeaderMap
  • Hataları düzgün biçimde ele almak için Option ve Result

Sırada: paylaşılan durum ve JSON yanıtları.

Sıkça Sorulan Sorular

“Çıkarıcılar” dersi ücretsiz mi?

Evet — “Çıkarıcılar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Learn Rust Coding kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn Rust Coding kursu toplamda 4 dersten oluşur.

“Çıkarıcılar” dersinde ne öğreneceğim?

İstekleri ayrıştırın Learn Rust Coding ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Learn Rust Coding öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Learn Rust Coding, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Çıkarıcılar” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Learn Rust Coding dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Learn Rust Coding dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Axum Yönlendirmesi
  2. Çıkarıcılar
  3. JSON ve Durum
  4. Ara Katman
← Learn Rust Coding Sayfasına Dön