Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Redis

Next.js मिडलवेयर में एज फ्लैग लागू करना जियो-आधारित कंटेंट कंट्रोल के लिए

Edge-Flags आपको अपने सर्वरलेस एप्लिकेशन के लिए फीचर फ्लैग को आसानी से प्रबंधित करने की अनुमति देता है। यह शक्तिशाली जियोलोकेशन नियमों के साथ Upstash Redis के शीर्ष पर बनाया गया है। आज मैं आपको एक बहुत ही सरल उदाहरण दिखाऊंगा कि कैसे आप Next.js मिडलवेयर में Edge-Flags का उपयोग करके यूजर के स्थान के आधार पर अनुरोधों को रीराइट कर सकते हैं।

फ्लैग बनाएं

हमारे उदाहरण ऐप में हम केवल EU में अपने यूजर्स के लिए सामग्री उपलब्ध कराना चाहते हैं, इसलिए हम एक नया Redis डेटाबेस बनाएंगे और फिर edge-flags पेज पर जाएंगे। बनाए गए डेटाबेस और production एनवायरनमेंट का चयन करें।

फिर हम eu-countries नाम से एक नया फ्लैग बना सकते हैं और EU के सभी देशों को जोड़ सकते हैं।

Next.js मिडलवेयर में एज फ्लैग लागू करना जियो-आधारित कंटेंट कंट्रोल के लिए

सेटअप करें और पैकेज इंस्टॉल करें

  1. यदि आपके पास मौजूदा Next.js ऐप नहीं है, तो आप npx create-next-app के साथ एक बना सकते हैं और @upstash/edge-flags और @upstash/redis पैकेज इंस्टॉल कर सकते हैं:
$ npm install @upstash/edge-flags @upstash/redis
  1. middleware.ts नाम से एक नई फाइल अपने प्रोजेक्ट के रूट में बनाएं और निम्न कोड जोड़ें:
/middleware.ts
import { NextRequest, NextResponse } from "next/server";
import { Client as EdgeFlags } from "@upstash/edge-flags";
import { Redis } from "@upstash/redis";
const edgeFlags = new EdgeFlags({ redis: Redis.fromEnv() });
export default async function middleware(
  req: NextRequest,
): Promise<NextResponse> {
  const enabled = await edgeFlags
    .getFlag("eu-countries", req.geo ?? {})
    .catch((err) => {
      console.error(err);
      return false;
    });
  if (!enabled) {
    const url = new URL(req.url);
    url.pathname = "/blocked";
    return NextResponse.rewrite(url);
  }
  return NextResponse.next();
}
export const config = { matcher: "/", };
  1. ब्लॉक किए गए के लिए एक बहुत परिष्कृत /blocked पेज बनाएं
app/blocked/page.tsx
export default function Page() {
  return <div> You are not in the EU</div>;
}

अब बस प्रोजेक्ट को Vercel पर डेप्लॉय करना बाकी है:

$ npx vercel

सुनिश्चित करें कि एनवायरनमेंट वेरिएबल को Vercel में या तो Upstash कंसोल से कॉपी करके या Upstash इंटीग्रेशन का उपयोग करके जोड़ा गया है।

Next.js मिडलवेयर में एज फ्लैग लागू करना जियो-आधारित कंटेंट कंट्रोल के लिए

इसे टेस्ट करें

विकास में जियोलोकेशन

स्थानीय रूप से विकसित करते समय जियोलोकेशन डेटा उपलब्ध नहीं है। आपको ऐप को टेस्ट करने के लिए वास्तव में Vercel पर डेप्लॉय करना होगा।

अब आप अपने ऐप के इंडेक्स पेज पर जाकर इसे टेस्ट कर सकते हैं। यदि आप EU में हैं तो आपको सामग्री दिखाई देनी चाहिए, अन्यथा आपको /blocked पेज पर रीडायरेक्ट किया जाएगा।

लिंक

  • Edge-Flags
  • उदाहरण कोड
  • उदाहरण ऐप
  1. HTML DOM Textarea required प्रॉपर्टी HTML DOM Textarea required प्रॉपर्टी

    परिचय HTML DOM Textarea required प्रॉपर्टी HTML दस्तावेज़ में टेक्स्ट एरिया के required एट्रिब्यूट का मान लौटाती है या संशोधित करती है। यह निर्दिष्ट करता है कि फॉर्म सबमिट करने से पहले टेक्स्ट एरिया भरना अनिवार्य है या नहीं। सिंटैक्स 1. required मान प्राप्त करना object.required 2. required मान सेट

  1. पायथन में बाइनरी ट्री से स्ट्रिंग बनाएं पायथन में बाइनरी ट्री से स्ट्रिंग बनाएं

    मान लीजिए हमारे पास एक बाइनरी ट्री है, हमें प्रीऑर्डर ट्रैवर्सल तरीके से बाइनरी ट्री से पैरेंथेसिस और पूर्णांकों से बनी एक स्ट्रिंग बनानी है। एक नल नोड को खाली पैरेंथेसिस जोड़ी () द्वारा दर्शाया जाएगा। और हमें उन सभी खाली पैरेंथेसिस जोड़ियों को छोड़ना होगा जो स्ट्रिंग और मूल बाइनरी ट्री के बीच एक-स

  1. Python 3 में Tkinter filedialog से स्ट्रिंग कैसे प्राप्त करें? Python 3 में Tkinter filedialog से स्ट्रिंग कैसे प्राप्त करें?

    Tkinter एप्लिकेशन में फाइल सिस्टम के साथ इंटरैक्ट करने के लिए, आप Tkinter filedialog मॉड्यूल का उपयोग कर सकते हैं। यह सिस्टम में फ़ाइलों से निपटने का एक तरीका प्रदान करता है। filedialog मॉड्यूल एप्लिकेशन के लिए विभिन्न फ़ाइल डायलॉग बनाने में डेवलपर्स की मदद करने के लिए कई बिल्ट-इन फ़ंक्शन प्रदान करत