Cloudflare เพิ่งเปิดตัว Upstash Integration สำหรับ Cloudflare Workers ทำให้การใช้ผลิตภัณฑ์ Upstash กับคนงานง่ายยิ่งขึ้น ในบล็อกโพสต์นี้ เราจะใช้การผสานรวม Upstash Redis เพื่อสร้างเครื่องมือย่อ URL แบบไร้เซิร์ฟเวอร์
เริ่มต้นใช้งาน
ต่อไปนี้เป็นขั้นตอนสำหรับการสร้างโครงการนี้:
- ตั้งค่าฐานข้อมูล Upstash
- สร้างผู้ปฏิบัติงานบน Cloudflare
- ผสานรวม Cloudflare Workers เข้ากับ Upstash
- ใช้อัลกอริทึมของโครงการ
- ปรับใช้แอปพลิเคชันของคุณ
การสร้างฐานข้อมูล
ไปที่คอนโซล Upstash และสร้างฐานข้อมูล Redis ให้กับตัวคุณเองโดยคลิกที่ สร้างฐานข้อมูล ปุ่มใน Redis ส่วน.

เพียงเท่านี้ ฐานข้อมูลของคุณก็พร้อมแล้ว!
การสร้าง Cloudflare Worker
เราจะใช้เครื่องมือ Cloudflare CLI เพื่อสร้างผู้ปฏิบัติงาน มันเป็นกระบวนการที่ค่อนข้างง่าย เพียงเปิดเทอร์มินัลของคุณแล้วพิมพ์คำสั่งด้านล่าง:
npm create cloudflare@latest
การดำเนินการคำสั่งนี้จะนำคุณไปสู่ตัวเลือกและการกำหนดค่าสำหรับแอปพลิเคชัน สุดท้ายระบบจะขอให้คุณเข้าสู่ระบบ Cloudflare ด้านล่างนี้เป็นตัวอย่างการกำหนดค่าของฉันและผลลัพธ์ผลลัพธ์:
เราได้สร้างและปรับใช้แอปพลิเคชันโดยใช้คำสั่งบรรทัดเดียว คำสั่งนี้ควรเตรียมใช้งานโฟลเดอร์ที่คล้ายกับสิ่งนี้:
/url-shortenersrc
└── worker.ts
node_modules
package-lock.json
package.json
tsconfig.json
wrangler.toml การเปิดใช้งานการรวม Upstash จะตรงไปตรงมาไม่แพ้กัน
Cloudflare - บูรณาการขั้นสูง
เข้าถึง Cloudflare Dashboard และเข้าสู่ระบบด้วยบัญชีเดียวกับที่คุณสร้าง 00 ใบสมัคร จากนั้น ไปที่ ผู้ปฏิบัติงานและเพจ> ภาพรวม ส่วนของแถบด้านข้าง ที่นี่คุณจะพบ 12 อยู่ในรายการแอปพลิเคชัน

การคลิกที่แอปพลิเคชันจะนำคุณไปยังหน้ารายละเอียดแอปพลิเคชัน ซึ่งเราจะดำเนินการขั้นตอนการรวมระบบ สลับไปที่การตั้งค่า ในรายละเอียดแอปพลิเคชัน และไปที่ การบูรณาการ ส่วน คุณจะเห็นการผสานรวมผู้ปฏิบัติงานต่างๆ อยู่ในรายการ หากต้องการดำเนินการต่อ ให้คลิก เพิ่มการรวมระบบ ปุ่มที่เกี่ยวข้องกับ Upstash Redis

ในหน้าการรวมระบบ ให้เชื่อมต่อกับบัญชี Upstash ของคุณ จากนั้นเลือก 28 ฐานข้อมูลจากเมนูแบบเลื่อนลง สิ้นสุดกระบวนการโดยกด ปุ่มบันทึก .
หมายเหตุ: โปรดอย่าทำการเปลี่ยนแปลงใดๆ ในชื่อข้อมูลลับใน กำหนดค่าข้อมูลลับ ขั้นตอน ข้อมูลรับรองเหล่านี้จะถูกเลือกโดยอัตโนมัติภายใน 38 บรรทัดในโค้ดเป็น 46 และ 53รหัส> .

การใช้ตัวย่อ URL
การใช้งานของเราจะค่อนข้างง่าย จะมีสองฟังก์ชันการทำงาน:
-
เมื่อ URL ถูกส่งโดยใช้วิธี POST คีย์ที่สร้างแบบสุ่มจะถูกกำหนดให้กับ URL นั้น คู่คีย์-URL นี้จะถูกจัดเก็บไว้ใน Redis เพื่อเรียกข้อมูล คีย์จะถูกต่อท้ายเป็นเส้นทางไปยัง URL ของผู้ปฏิบัติงาน และส่งไปยังผู้ใช้ใน
68รูปแบบ -
เมื่อผู้ใช้เข้าถึง URL ของผู้ปฏิบัติงานโดยใช้คีย์ที่เพิ่มไว้ก่อนหน้านี้เป็นเส้นทาง ค่าที่สอดคล้องกันของคีย์จะถูกดึงมาจาก Redis จากนั้นผู้ใช้จะถูกเปลี่ยนเส้นทางไปยัง URL นี้ด้วย
73รหัสตอบกลับ
เราจะใช้งานแอปพลิเคชันใน 85 ไฟล์. ด้านล่างนี้คือการใช้งานพื้นฐานของเครื่องมือย่อ URL ของเรา:
import { Redis } from "@upstash/redis/cloudflare";
export interface Env {
UPSTASH_REDIS_REST_URL: string;
UPSTASH_REDIS_REST_TOKEN: string;
}
export default {
async fetch(
request: Request,
env: Env,
ctx: ExecutionContext,
): Promise<Response> {
const redis = Redis.fromEnv(env);
/*
generateRandomKey function returns a 7 digit alphanumerical key.
If an identical key exists in Redis, it will create new key.
*/
async function generateRandomKey(): Promise<string> {
const key: string = btoa(
crypto.getRandomValues(new Uint8Array(2)).toString(),
).replaceAll("=", "");
if (await redis.exists(key)) {
return generateRandomKey();
}
return key;
}
/*
If the request method is POST, "longUrl" field will be extracted from
the request body and new key will be generated for this url.
Then, this key-value pair will be persisted to Redis.
*/
if (request.method === "POST") {
const requestUrl = request.url;
const body = await request.text();
const { longUrl } = JSON.parse(body);
const key = await generateRandomKey();
redis.set(key, longUrl);
const responseUrl = requestUrl + key;
return new Response(responseUrl);
}
const slug: string = request.url.split("/").pop() || "";
const url = (await redis.get(slug)) as string;
/*
If the slug exists in the Redis DB as key, user will be redirected to URL in the value.
If the slug doesn't exist in the Redis, or it doesn't exist at all,
an error will be returned.
*/
if (url) {
return Response.redirect(url, 307);
} else {
const errorText = !slug
? "Please provide a slug."
: `Slug ${slug} not found. `;
return new Response(errorText, { status: 404 });
}
},
};
เมื่ออัลกอริทึมของเราพร้อมแล้ว เหลือเพียงขั้นตอนเดียวเท่านั้น:การปรับใช้แอปพลิเคชัน ไปที่ 98 โฟลเดอร์จากเทอร์มินัล และรันคำสั่งด้านล่าง:
npm run deploy Cloudflare Worker ของเราเริ่มทำงานแล้ว! คุณสามารถทดสอบได้ในแดชบอร์ดแอปพลิเคชันหรือผ่านทางคำขอขด นี่คือตัวอย่างคำขอสำหรับคุณ คุณสามารถแทนที่ URL ด้วย URL ของผู้ปฏิบัติงานของคุณ หรือทดสอบการใช้งานของฉัน:
curl -X POST https://url-shortener.fahreddin.workers.dev \
-d '{ "longUrl" : "https://google.com" }' การคลิกที่ URL ตอบกลับจะนำคุณไปที่ https://google.com .
บทสรุป
ขอขอบคุณที่ติดตามบทช่วยสอน!
ดังที่คุณได้ค้นพบแล้ว การผสมผสานระหว่างฟังก์ชันไร้เซิร์ฟเวอร์และพลังของ Upstash Redis จะเปิดโลกแห่งความเป็นไปได้สำหรับโครงการของคุณ ความคล่องตัวและประสิทธิภาพของคู่นี้ช่วยให้คุณสร้างโซลูชันที่ไม่เพียงแต่เป็นนวัตกรรมเท่านั้น แต่ยังตอบสนองได้อย่างน่าทึ่ง
โปรดจำไว้ว่าคู่มือนี้เป็นเพียงจุดเริ่มต้นเท่านั้น คุณสามารถขยายและปรับปรุงโครงการนี้ได้อย่างไร้ขีดจำกัด
หากคุณมีคำถามหรือปัญหาใดๆ โปรดติดต่อฉันได้ที่ fahreddin@upstash.com
ขอให้สนุกกับการเขียนโค้ด!