תיעוד 253
ממשק ה-API של Workers
Workers מאפשרים להריץ קוד בקצה. כשמקשרים דלי R2 ל-Worker, אפשר לקרוא ולכתוב אובייקטים ישירות באמצעות ממשק ה-API של Workers.
#1. יצירת דלי
דלי מאחסן את האובייקטים שלכם ב-R2. כדי ליצור דלי R2 חדש:
התחברו לחשבון Cloudflare שלכם:
npx wrangler loginצרו דלי בשם
my-bucket:npx wrangler r2 bucket create my-bucketאם מופיעה בקשה, בחרו את החשבון שבו אתם רוצים ליצור את הדלי.
ודאו שהדלי נוצר:
npx wrangler r2 bucket listבלוח הבקרה של Cloudflare, עברו אל R2 object storage. מעבר אל Overview ↗
בחרו Create bucket.
הזינו שם לדלי.
בחרו מיקום לדלי ומחלקת אחסון ברירת מחדל.
בחרו Create bucket.
#2. יצירת Worker עם קישור R2
צרו פרויקט Worker חדש:
npm:
npm create cloudflare@latest -- r2-workeryarn:
yarn create cloudflare r2-workerpnpm:
pnpm create cloudflare@latest r2-workerכשמופיעה בקשה, בחרו Hello World example ו-JavaScript (או TypeScript) כתבנית.
עברו אל תיקיית הפרויקט:
cd r2-workerהוסיפו קישור R2 לקובץ התצורה של Wrangler. החליפו את
my-bucketבשם הדלי שלכם:{ "r2_buckets": [ { "binding": "MY_BUCKET", "bucket_name": "my-bucket" } ] }[[r2_buckets]] binding = "MY_BUCKET" bucket_name = "my-bucket"(אופציונלי) אם אתם משתמשים ב-TypeScript, צרו מחדש את הטיפוסים:
npx wrangler types
#3. קריאה וכתיבה של אובייקטים
השתמשו בקישור כדי לעבוד עם הדלי. הדוגמה הזו מאחסנת ומאחזרת אובייקטים לפי נתיב ה-URL:
src/index.js:
export default {
async fetch(request, env) {
// Get the object key from the URL path
// For example: /images/cat.png → images/cat.png
const url = new URL(request.url);
const key = url.pathname.slice(1);
// PUT: Store the request body in R2
if (request.method === "PUT") {
await env.MY_BUCKET.put(key, request.body);
return new Response(`Put ${key} successfully!`);
}
// GET: Retrieve the object from R2
const object = await env.MY_BUCKET.get(key);
if (object === null) {
return new Response("Object not found", { status: 404 });
}
return new Response(object.body);
},
};src/index.ts:
export default {
async fetch(request, env): Promise<Response> {
// Get the object key from the URL path
// For example: /images/cat.png → images/cat.png
const url = new URL(request.url);
const key = url.pathname.slice(1);
// PUT: Store the request body in R2
if (request.method === "PUT") {
await env.MY_BUCKET.put(key, request.body);
return new Response(`Put ${key} successfully!`);
}
// GET: Retrieve the object from R2
const object = await env.MY_BUCKET.get(key);
if (object === null) {
return new Response("Object not found", { status: 404 });
}
return new Response(object.body);
},
} satisfies ExportedHandler<Env>;#4. בדיקה ופריסה
בדקו את ה-Worker באופן מקומי:
npx wrangler devפיתוח מקומי
כברירת מחדל,
wrangler devמשתמש בהדמיה מקומית של R2. אובייקטים שאתם מאחסנים במהלך הפיתוח קיימים רק במחשב שלכם בתיקייה.wrangler/stateואינם משפיעים על דלי הייצור.כדי להתחבר לדלי R2 האמיתי במהלך הפיתוח, הוסיפו
"remote": trueלקישור ה-R2 בקובץ התצורה של Wrangler. עיינו בקישורי remote למידע נוסף.אחרי ששרת הפיתוח רץ, בדקו אחסון ואחזור של אובייקטים:
# Store an object curl -X PUT http://localhost:8787/my-file.txt -d 'Hello, R2!' # Retrieve the object curl http://localhost:8787/my-file.txtפרסו לייצור:
npx wrangler deployאחרי הפריסה, Wrangler מציג את כתובת ה-URL של ה-Worker (לדוגמה,
https://r2-worker.<YOUR_SUBDOMAIN>.workers.dev). בדקו אחסון ואחזור של אובייקטים:# Store an object curl -X PUT https://r2-worker.<YOUR_SUBDOMAIN>.workers.dev/my-file.txt -d 'Hello, R2!' # Retrieve the object curl https://r2-worker.<YOUR_SUBDOMAIN>.workers.dev/my-file.txt
עיינו בתיעוד ממשק ה-API של R2 ל-Workers לעיון המלא ב-API.
#השלבים הבאים
#כתובות URL חתומות מראש
יצירת כתובות URL זמניות לגישה פרטית לאובייקטים.
#דליים ציבוריים
הגשת קבצים ישירות ב-HTTP באמצעות דלי ציבורי.
#CORS
הגדרת CORS להעלאות מהדפדפן.
#מחזורי חיים של אובייקטים
הגדרת כללי מחזור חיים למחיקה אוטומטית של אובייקטים ישנים.