Rust कोडिंग सीखें · पाठ

मिडलवेयर

Tower लेयर

पाठ 4, कुल 4 में से13 चरण

मिडलवेयर, CoddyKit पर Rust कोडिंग सीखें का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Rust कोडिंग सीखें सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Rust कोडिंग सीखें पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

Middleware क्या है?

मिडलवेयर हैंडलर से पहले और बाद में कोड चलाकर अनुरोध/प्रतिक्रिया चक्र को घेरता है। इसका उपयोग लॉगिंग, प्रमाणीकरण, संपीड़न और समय-सीमा के लिए करें।

  • Axum tower पारिस्थितिकी तंत्र पर आधारित है
  • मिडलवेयर को लेयर के रूप में जोड़ा जाता है

Service ट्रेट

Tower एक Service परिभाषित करता है: ऐसा घटक जो अनुरोध लेता है और अतुल्यकालिक रूप से प्रतिक्रिया तैयार करता है। लेयर एक सर्विस को दूसरी सर्विस में लपेटती हैं।

लेयर जोड़ना

.layer() से मिडलवेयर जोड़ें। यहाँ हम tower_http से अनुरोध ट्रेसिंग जोड़ते हैं।

use axum::{Router, routing::get};
use tower_http::trace::TraceLayer;

fn app() -> Router {
    Router::new()
        .route("/", get(|| async { "ok" }))
        .layer(TraceLayer::new_for_http())
}

लेयर का क्रम

लेयर नीचे से ऊपर की ओर लपेटती हैं: जो अंतिम लेयर जोड़ी जाती है, वही सबसे बाहरी होती है। अनुरोध बाहरी से आंतरिक की ओर और प्रतिक्रियाएँ आंतरिक से बाहरी की ओर प्रवाहित होती हैं।

use axum::{Router, routing::get};
use tower_http::{trace::TraceLayer, compression::CompressionLayer};

fn app() -> Router {
    Router::new()
        .route("/", get(|| async { "ok" }))
        .layer(CompressionLayer::new())
        .layer(TraceLayer::new_for_http())
}

from_fn से कस्टम मिडलवेयर

middleware::from_fn किसी अतुल्यकालिक फ़ंक्शन को मिडलवेयर में बदलता है। इसे अनुरोध और शृंखला के बाकी हिस्से को चलाने के लिए एक Next प्राप्त होता है।

use axum::{middleware::Next, response::Response, extract::Request};

async fn log_mw(req: Request, next: Next) -> Response {
    println!("{} {}", req.method(), req.uri());
    next.run(req).await
}

कस्टम मिडलवेयर को जोड़ना

अपने फ़ंक्शन को from_fn से लपेटें और उसे लेयर के रूप में जोड़ें।

use axum::{Router, routing::get, middleware};

fn app() -> Router {
    Router::new()
        .route("/", get(|| async { "ok" }))
        .layer(middleware::from_fn(log_mw))
}

अनुरोधों को बीच में रोकना

मिडलवेयर next को बुलाए बिना तुरंत प्रतिक्रिया दे सकता है, जो प्रमाणीकरण के लिए उपयोगी है। प्रतिक्रिया लौटाने पर शृंखला रुक जाती है।

use axum::{middleware::Next, response::Response, extract::Request, http::StatusCode};

async fn auth(req: Request, next: Next) -> Result<Response, StatusCode> {
    if req.headers().contains_key("authorization") {
        Ok(next.run(req).await)
    } else {
        Err(StatusCode::UNAUTHORIZED)
    }
}

मिडलवेयर शृंखला का मॉडल बनाना

शृंखला वास्तव में एक-दूसरे को बुलाने वाले फ़ंक्शनों से बनी होती है। यह चलने योग्य उदाहरण पहले/बाद में होने वाली रैपिंग का मॉडल बनाता है।

fn handler() -> String {
    "response".to_string()
}

fn logging<F: Fn() -> String>(next: F) -> String {
    println!("-> request in");
    let res = next();
    println!("<- response out");
    res
}

fn main() {
    let out = logging(handler);
    println!("body: {}", out);
}

प्रति-रूट मिडलवेयर

पूरे ऐप के बजाय मेथड राउटर पर .layer() बुलाकर किसी एक रूट पर लेयर लागू करें।

use axum::{Router, routing::get, middleware};

fn app() -> Router {
    Router::new().route(
        "/admin",
        get(|| async { "admin" }).layer(middleware::from_fn(auth)),
    )
}

सामान्य tower_http लेयर

tower_http क्रेट पहले से बने मिडलवेयर उपलब्ध कराता है:

  • लॉगिंग के लिए TraceLayer
  • gzip के लिए CompressionLayer
  • CORS के लिए CorsLayer
  • अनुरोध का समय सीमित करने के लिए TimeoutLayer
use tower_http::cors::CorsLayer;

fn cors() -> CorsLayer {
    CorsLayer::permissive()
}

ServiceBuilder से लेयरों का समूह बनाना

ServiceBuilder से कई लेयरों को सुव्यवस्थित रूप से समूहित करें। यह उन्हें ऊपर से नीचे लागू करता है, जिससे क्रम पूर्वानुमेय रहता है।

use tower::ServiceBuilder;
use tower_http::{trace::TraceLayer, compression::CompressionLayer};

fn stack() -> ServiceBuilder<impl Sized> {
    ServiceBuilder::new()
        .layer(TraceLayer::new_for_http())
        .layer(CompressionLayer::new())
}

त्वरित जाँच

मिडलवेयर की अपनी समझ जाँचें।

पुनरावलोकन

आपने tower लेयरों के साथ मिडलवेयर सीखा:

  • .layer() से मिडलवेयर जोड़ें; अंतिम जोड़ी गई लेयर सबसे बाहरी होती है
  • from_fn से Next का उपयोग करके कस्टम मिडलवेयर बनाएँ
  • शृंखला को बीच में रोकने के लिए तुरंत प्रतिक्रिया लौटाएँ, जैसे प्रमाणीकरण में
  • tower_http ट्रेस, संपीड़न, CORS और समय-सीमा वाली लेयर उपलब्ध कराता है

इसके साथ Axum पाठ्यक्रम पूरा होता है।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Rust सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
39
पाठ
144

अक्सर पूछे जाने वाले प्रश्न

क्या “मिडलवेयर” पाठ निःशुल्क है?

हाँ — Rust कोडिंग सीखें अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “मिडलवेयर” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Rust कोडिंग सीखें पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“मिडलवेयर” में मैं क्या सीखूँगा?

Tower लेयर आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Rust कोडिंग सीखें का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Rust कोडिंग सीखें शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Rust कोडिंग सीखें शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“मिडलवेयर” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Rust कोडिंग सीखें पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Rust कोडिंग सीखें पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Axum रूटिंग
  2. एक्सट्रैक्टर
  3. JSON और अवस्था
  4. मिडलवेयर
← Rust कोडिंग सीखें पर वापस जाएँ