תיעוד 240
בנו API לחזית באמצעות Pages Functions
עודכן לאחרונה ב-21 באפריל 2026
במדריך זה תבנו יישום Pages מסוג full-stack. היישום שלכם יכיל:
- חזית, שנבנית באמצעות Cloudflare Pages ו-מסגרת React.
- API בפורמט JSON, שנבנה עם Pages Functions, ומחזיר פוסטים בבלוג שאפשר לאחזר ולהציג בחזית.
אם אתם מעדיפים לעבוד עם headless CMS במקום API כדי להציג את תוכן הבלוג, עיינו ב-מדריך headless CMS.
#מדריך וידאו
#1. בנו את החזית
כדי להתחיל, צרו יישום Pages חדש באמצעות מסגרת React.
#צרו פרויקט React חדש
בטרמינל, צרו פרויקט React חדש בשם blog-frontend באמצעות הפקודה create-vite. היכנסו לתיקייה blog-frontend שנוצרה והפעילו שרת פיתוח מקומי:
npx create-vite -t react blog-frontend
cd blog-frontend
npm install
npm run dev#הגדירו את פרויקט React
כדי להגדיר את פרויקט React:
- התקינו את React Router ↗︎ בשורש התיקייה
blog-frontend.
npm:
npm i react-router-dom@6yarn:
yarn add react-router-dom@6pnpm:
pnpm add react-router-dom@6bun:
bun add react-router-dom@6- נקו את התוכן של
src/App.js. העתיקו והדביקו את הקוד הבא כדי לייבא את React Router אלApp.js, ולהגדיר נתב חדש עם שני נתיבים:
import { Routes, Route } from "react-router-dom";
import Posts from "./components/posts";
import Post from "./components/post";
function App() {
return (
<Routes>
<Route path="/" element={<Posts />} />
<Route path="/posts/:id" element={<Post />} />
</Routes>
);
}
export default App;- בתיקייה
src, צרו תיקייה חדשה בשםcomponents. - בתיקייה
components, צרו שני קבצים:posts.jsו-post.js. הקבצים האלה יטענו את הפוסטים בבלוג מה-API שלכם, ויציגו אותם. - מלאו את
posts.jsבקוד הבא:
import React, { useEffect, useState } from "react";
import { Link } from "react-router-dom";
const Posts = () => {
const [posts, setPosts] = useState([]);
useEffect(() => {
const getPosts = async () => {
const resp = await fetch("/api/posts");
const postsResp = await resp.json();
setPosts(postsResp);
};
getPosts();
}, []);
return (
<div>
<h1>Posts</h1>
{posts.map((post) => (
<div key={post.id}>
<h2>
<Link to={`/posts/${post.id}`}>{post.title}</Link>
</h2>
</div>
))}
</div>
);
};
export default Posts;- מלאו את
post.jsבקוד הבא:
import React, { useEffect, useState } from "react";
import { Link, useParams } from "react-router-dom";
const Post = () => {
const [post, setPost] = useState({});
const { id } = useParams();
useEffect(() => {
const getPost = async () => {
const resp = await fetch(`/api/post/${id}`);
const postResp = await resp.json();
setPost(postResp);
};
getPost();
}, [id]);
if (!Object.keys(post).length) return <div />;
return (
<div>
<h1>{post.title}</h1>
<p>{post.text}</p>
<p>
<em>Published {new Date(post.published_at).toLocaleString()}</em>
</p>
<p>
<Link to="/">Go back</Link>
</p>
</div>
);
};
export default Post;#2. בנו את ה-API
עכשיו תיצרו Pages Functions ששומר את תוכן הבלוג ומאחזר אותו דרך API בפורמט JSON.
#כתבו את Pages Function
כדי ליצור את Pages Function שישמש כ-API בפורמט JSON:
- צרו תיקייה
functionsבתיקייהblog-frontend. - בתוך
functions, צרו תיקייה בשםapi. - בתוך
api, צרו קובץposts.jsבתיקייהapi. - מלאו את
posts.jsבקוד הבא:
import posts from "./post/data";
export function onRequestGet() {
return Response.json(posts);
}הקוד הזה מקבל נתוני בלוג (מ-data.js, שתיצרו בשלב 8) ומחזיר אותם כתגובת JSON מהנתיב /api/posts.
- בתיקייה
api, צרו תיקייה בשםpost. - בתיקייה
post, צרו קובץdata.js. - מלאו את
data.jsבקוד הבא. כאן נמצאים תוכן הבלוג, כותרת הבלוג ומידע נוסף על הבלוג.
const posts = [
{
id: 1,
title: "My first blog post",
text: "Hello world! This is my first blog post on my new Cloudflare Workers + Pages blog.",
published_at: new Date("2020-10-23"),
},
{
id: 2,
title: "Updating my blog",
text: "It's my second blog post! I'm still writing and publishing using Cloudflare Workers + Pages :)",
published_at: new Date("2020-10-26"),
},
];
export default posts;- בתיקייה
post, צרו קובץ[[id]].js. - מלאו את
[[id]].jsבקוד הבא:
import posts from "./data";
export function onRequestGet(context) {
const id = context.params.id;
if (!id) {
return new Response("Not found", { status: 404 });
}
const post = posts.find((post) => post.id === Number(id));
if (!post) {
return new Response("Not found", { status: 404 });
}
return Response.json(post);
}[[id]].js הוא נתיב דינמי שמשמש לקבלת id של פוסט בבלוג.
#3. פריסה
אחרי שהגדרתם את יישום Pages ואת Pages Function, פרסו את הפרויקט באמצעות Wrangler או דרך לוח הבקרה.
#פריסה עם Wrangler
בתיקייה blog-frontend, הריצו את wrangler pages deploy כדי לפרוס את הפרויקט ללוח הבקרה של Cloudflare.
wrangler pages deploy blog-frontend#פריסה דרך לוח הבקרה
כדי לפרוס דרך לוח הבקרה של Cloudflare, תצטרכו ליצור מאגר Git חדש לפרויקט Pages ולחבר את מאגר Git ל-Cloudflare. המדריך הזה משתמש ב-GitHub כספק Git.
#צרו מאגר חדש
צרו מאגר GitHub חדש על ידי ביקור ב-repo.new ↗︎. אחרי יצירת מאגר חדש, הכינו ודחפו את היישום המקומי ל-GitHub על ידי הרצת הפקודות הבאות בטרמינל:
git init
git remote add origin https://github.com/<YOUR-GH-USERNAME>/<REPOSITORY-NAME>
git add .
git commit -m "Initial commit"
git branch -M main
git push -u origin main#פרסו עם Cloudflare Pages
פרסו את היישום ל-Pages:
- בלוח הבקרה של Cloudflare, עברו לעמוד Workers & Pages. עברו אל Workers & Pages ↗
- בחרו Create application > Pages > Import an existing Git repository.
- בחרו את מאגר GitHub החדש שיצרתם, ובמקטע Set up builds and deployments ספקו את המידע הבא:
| אפשרות הגדרה | ערך |
|---|---|
| Production branch | main |
| Build command | npm run build |
| Build directory | build |
אחרי הגדרת האתר, התחילו את הפריסה הראשונה. אתם אמורים לראות את Cloudflare Pages מתקין את blog-frontend, את התלויות של הפרויקט, ובונה את האתר.
בסיום המדריך הזה, יצרתם יישום Pages מסוג full-stack.
#משאבים קשורים
- למדו על ניתוב של Pages Functions