API गेटवे और रिवर्स प्रॉक्सी (Nginx + Spring Cloud Gateway) · पाठ

फ़िल्टर से पूर्व और पश्च-प्रसंस्करण

सेवा तक अनुरोध पहुँचने से पहले और सेवा की प्रतिक्रिया के बाद की कार्रवाइयों के लिए फ़िल्टर लागू कीजिए।

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

फ़िल्टर से पूर्व और पश्च-प्रसंस्करण, CoddyKit पर API गेटवे और रिवर्स प्रॉक्सी (Nginx + Spring Cloud Gateway) का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह API गेटवे और रिवर्स प्रॉक्सी (Nginx + Spring Cloud Gateway) सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। API गेटवे और रिवर्स प्रॉक्सी (Nginx + Spring Cloud Gateway) पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

प्री/पोस्ट फ़िल्टर का परिचय

स्वागत है! इस पाठ में हम जानेंगे कि Spring Cloud Gateway फ़िल्टर बैकएंड सेवा तक पहुँचने से पहले अनुरोधों को कैसे संसाधित कर सकते हैं (प्री-प्रोसेसिंग) और सेवा की प्रतिक्रिया मिलने के बाद उन्हें कैसे संसाधित कर सकते हैं (पोस्ट-प्रोसेसिंग)।

जटिल API गेटवे कार्यों को संभालने के लिए यह सूक्ष्म स्तर का नियंत्रण अत्यंत महत्वपूर्ण है।

फ़िल्टर चेन का पुनरावलोकन

याद रखें कि फ़िल्टर एक चेन में काम करते हैं। प्रत्येक GatewayFilter या GlobalFilter ये कार्य कर सकता है:

  • chain.filter(exchange) को कॉल करने से पहले: यह प्री-प्रोसेसिंग है।
  • chain.filter(exchange) से Mono<Void> लौटने के बाद: यह पोस्ट-प्रोसेसिंग है।

Mono का उपयोग करने वाला Spring Cloud Gateway का प्रतिक्रियाशील स्वरूप इस क्रमिक निष्पादन को शक्तिशाली बनाता है।

प्री-प्रोसेसिंग: सेवा से पहले

प्री-प्रोसेसिंग फ़िल्टर गेटवे द्वारा अनुरोध को आपकी वास्तविक बैकएंड सेवा तक भेजे जाने से पहले निष्पादित होते हैं। इन्हें आने वाले अनुरोधों के लिए इंटरसेप्टर समझिए।

प्री-प्रोसेसिंग के सामान्य कार्यों में शामिल हैं:

  • अनुरोधों का प्रमाणीकरण और प्राधिकरण करना
  • अनुरोध हेडर जोड़ना या उनमें बदलाव करना
  • URL पथ या क्वेरी पैरामीटर को फिर से लिखना
  • दर सीमा लागू करना

प्री-फ़िल्टर उदाहरण: हेडर जोड़ना

आइए, एक सरल प्री-प्रोसेसिंग उदाहरण देखें: सेवा तक पहुँचने से पहले अनुरोध में कस्टम हेडर जोड़ना। Spring Cloud Gateway इसके लिए AddRequestHeader जैसे अंतर्निर्मित फ़िल्टर प्रदान करता है।

यह कॉन्फ़िगरेशन /api/pre/** पथ से मेल खाने वाले सभी अनुरोधों में gateway मान वाला X-Request-Source हेडर जोड़ता है।

spring:
  cloud:
    gateway:
      routes:
        - id: pre_header_route
          uri: http://localhost:8080/service/echo
          predicates:
            - Path=/api/pre/**
          filters:
            - AddRequestHeader=X-Request-Source, gateway

चलाने योग्य प्री-फ़िल्टर कोड

इस पूरे Spring Boot ऐप्लिकेशन को चलाकर देखें। यह एक ऐसा गेटवे तैयार करता है, जो अनुरोध हेडर जोड़ता है और उसी ऐप्लिकेशन के भीतर एक सरल echo एंडपॉइंट पर रूट करता है। जोड़ा गया हेडर देखने के लिए बैकएंड का कंसोल या प्रतिक्रिया जाँचें!

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class GatewayApp {

  public static void main(String[] args) {
    SpringApplication.run(GatewayApp.class, args);
  }

  // Dummy backend service to echo headers
  @GetMapping("/service/echo")
  public String echoHeaders(@RequestHeader(required = false) java.util.Map<String, String> headers) {
    return "Backend received headers: " + headers.get("x-request-source");
  }

  @Bean
  public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
    return builder.routes()
      .route("pre_header_route", r -> r.path("/api/pre/**")
        .filters(f -> f.addRequestHeader("X-Request-Source", "gateway"))
        .uri("http://localhost:8080/service/echo")) // Route to its own dummy backend
      .build();
  }
}

पोस्ट-प्रोसेसिंग: सेवा के बाद

पोस्ट-प्रोसेसिंग फ़िल्टर बैकएंड सेवा की प्रतिक्रिया मिलने के बाद, लेकिन गेटवे द्वारा वह प्रतिक्रिया क्लाइंट को वापस भेजे जाने से पहले निष्पादित होते हैं।

इससे आप बैकएंड की प्रतिक्रिया का निरीक्षण या उसमें बदलाव कर सकते हैं।

पोस्ट-प्रोसेसिंग के सामान्य कार्यों में शामिल हैं:

  • प्रतिक्रिया हेडर या बॉडी में बदलाव करना
  • प्रतिक्रिया का विवरण लॉग करना (स्थिति और विलंबता)
  • प्रतिक्रिया प्रसंस्करण के लिए मेट्रिक्स जोड़ना
  • प्रतिक्रिया कैशिंग लागू करना

कस्टम पोस्ट-प्रोसेसिंग फ़िल्टर

पोस्ट-प्रोसेसिंग के लिए आपको अक्सर कस्टम फ़िल्टर बनाने पड़ते हैं। ये फ़िल्टर chain.filter(exchange) से प्राप्त Mono का उपयोग करके ऐसा तर्क जोड़ते हैं, जो सफलतापूर्वक पूरा होने पर निष्पादित होता है।

पोस्ट-प्रोसेसिंग कार्यों के लिए .then(Mono.fromRunnable(() -> { ... })) पैटर्न सामान्य है।

चलाने योग्य पोस्ट-फ़िल्टर कोड

यहाँ एक पूरा Spring Boot ऐप्लिकेशन दिया गया है, जिसमें कस्टम GlobalFilter प्रत्येक प्रतिक्रिया में X-Post-Processed हेडर जोड़ता है। ध्यान दें कि फ़िल्टर तर्क को .then(Mono.fromRunnable(...)) का उपयोग करके कैसे चेन किया गया है।

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.core.Ordered;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;

@SpringBootApplication
@RestController
public class GatewayApp {

  public static void main(String[] args) {
    SpringApplication.run(GatewayApp.class, args);
  }

  // Dummy backend service
  @GetMapping("/service/data")
  public String getData() {
    return "Backend response data!";
  }

  @Bean
  public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
    return builder.routes()
      .route("post_filter_route", r -> r.path("/api/post/**")
        .uri("http://localhost:8080/service/data")) // Route to itself
      .build();
  }
}

@Component
class CustomPostFilter implements GlobalFilter, Ordered {

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        return chain.filter(exchange).then(Mono.fromRunnable(() -> {
            // This code runs AFTER the downstream service responds
            exchange.getResponse().getHeaders().add("X-Post-Processed", "true");
            System.out.println("Post-processing: Added X-Post-Processed header.");
        }));
    }

    @Override
    public int getOrder() {
        return -1; // Execute relatively late in the filter chain
    }
}

प्री बनाम पोस्ट: मुख्य अंतर

प्री और पोस्ट प्रोसेसिंग का उपयोग कब करना है, यह समझना महत्वपूर्ण है:

  • प्री-फ़िल्टर: गेटवे से बाहर जाने से पहले अनुरोध पर काम करते हैं। सुरक्षा, रूटिंग तर्क और अनुरोध रूपांतरण के लिए आदर्श।
  • पोस्ट-फ़िल्टर: बैकएंड से लौटने के बाद प्रतिक्रिया पर काम करते हैं। प्रतिक्रिया रूपांतरण, प्रतिक्रिया विवरण की लॉगिंग और मेट्रिक्स संग्रह के लिए आदर्श।

अपने API ट्रैफ़िक को कुशलता से प्रबंधित करने के लिए सही चरण चुनें।

फ़िल्टर समय निर्धारण चुनौती

Spring Cloud Gateway सेटअप पर विचार कीजिए। बैकएंड सेवा को अनुरोध भेजने से पहले फ़िल्टर आम तौर पर इनमें से कौन-से कार्य करते हैं?

पुनरावलोकन: प्री/पोस्ट प्रोसेसिंग

बहुत अच्छा! आपने Spring Cloud Gateway फ़िल्टर के साथ प्री-प्रोसेसिंग और पोस्ट-प्रोसेसिंग की शक्तिशाली अवधारणा सीख ली है।

  • प्री-फ़िल्टर अनुरोधों को बैकएंड तक पहुँचने से पहले संशोधित करते हैं।
  • पोस्ट-फ़िल्टर बैकएंड के उत्तर देने के बाद प्रतिक्रियाओं को संशोधित करते हैं।
  • रिएक्टिव Mono श्रृंखला फ़िल्टर के निष्पादन के समय पर सटीक नियंत्रण देती है।

मज़बूत और सुविधाओं से भरपूर API गेटवे बनाने के लिए यह समझ बहुत महत्वपूर्ण है!

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

एआई शिक्षक के साथ API गेटवे और रिवर्स प्रॉक्सी (Nginx + Spring Cloud Gateway) सीखें — निःशुल्क

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

पाठ्यक्रम
12
पाठ
48

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

क्या “फ़िल्टर से पूर्व और पश्च-प्रसंस्करण” पाठ निःशुल्क है?

हाँ—“फ़िल्टर से पूर्व और पश्च-प्रसंस्करण” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और API गेटवे और रिवर्स प्रॉक्सी (Nginx + Spring Cloud Gateway) पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। API गेटवे और रिवर्स प्रॉक्सी (Nginx + Spring Cloud Gateway) पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“फ़िल्टर से पूर्व और पश्च-प्रसंस्करण” में मैं क्या सीखूँगा?

सेवा तक अनुरोध पहुँचने से पहले और सेवा की प्रतिक्रिया के बाद की कार्रवाइयों के लिए फ़िल्टर लागू कीजिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ API गेटवे और रिवर्स प्रॉक्सी (Nginx + Spring Cloud Gateway) का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या API गेटवे और रिवर्स प्रॉक्सी (Nginx + Spring Cloud Gateway) शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर API गेटवे और रिवर्स प्रॉक्सी (Nginx + Spring Cloud Gateway) शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“फ़िल्टर से पूर्व और पश्च-प्रसंस्करण” पाठ पूरा करने में कितना समय लगता है?

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

क्या मैं इस API गेटवे और रिवर्स प्रॉक्सी (Nginx + Spring Cloud Gateway) पाठ में कोड लिख और चला सकता हूँ?

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

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

  1. वैश्विक फ़िल्टर और GatewayFilterFactory
  2. कस्टम अनुरोध और प्रतिक्रिया फ़िल्टर
  3. फ़िल्टर से पूर्व और पश्च-प्रसंस्करण
  4. उपयोगी अंतर्निहित GatewayFilters
← API गेटवे और रिवर्स प्रॉक्सी (Nginx + Spring Cloud Gateway) पर वापस जाएँ