Build an API for your front end using Pages Functions
Introduction
In this tutorial, you will build a full-stack Pages application. Your application will contain:
- A front end, built using Cloudflare Pages and the React framework.
- A JSON API, built with Pages Functions, that returns blog posts that can be retrieved and rendered in your front end.
If you prefer to work with a headless CMS rather than an API to render your blog content, refer to the headless CMS tutorial.
Build your front end
To begin, create a new Pages application using the React framework.
Create a new React project
In your terminal, create a new React project called blog-frontend using the create-react-app command. Go into the newly created blog-frontend directory and start a local development server:
Set up your React project
To set up your React project:
- Install the
React Router
in the root of your
blog-frontenddirectory.
With npm:
With yarn:
- Clear the contents of
src/App.js. Copy and paste the following code to import the React Router intoApp.js, and set up a new router with two routes:
- In the
srcdirectory, create a new folder calledcomponents. - In the
componentsdirectory, create two files:posts.js, andpost.js. These files will load the blog posts from your API, and render them. - Populate
posts.jswith the following code:
- Populate
post.jswith the following code:
Build your API
You will now create a Pages Functions that stores your blog content and retrieves it via a JSON API.
Write your Pages Function
To create the Pages Function that will act as your JSON API:
- Create a
functionsdirectory in yourblog-frontenddirectory. - In
functions, create a directory namedapi. - In
api, create aposts.jsfile in theapidirectory. - Populate
posts.jswith the following code:
This code gets blog data (from data.js, which you will make in step 8) and returns it as a JSON response from the path /api/posts.
- In the
apidirectory, create a directory namedpost. - In the
postdirectory, create adata.jsfile. - Populate
data.jswith the following code. This is where your blog content, blog title, and other information about your blog lives.
- In the
postdirectory, create an[[id]].jsfile. - Populate
[[id]].jswith the following code:
[[id]].js is a dynamic route which is used to accept a blog post id.
Deploy
After you have configured your Pages application and Pages Function, deploy your project using the Wrangler or via the dashboard.
Deploy with Wrangler
In your blog-frontend directory, run wrangler pages deploy to deploy your project to the Cloudflare dashboard.
Deploy via the dashboard
To deploy via the Cloudflare dashboard, you will need to create a new Git repository for your Pages project and connect your Git repository to Cloudflare. This tutorial uses GitHub as its Git provider.
Create a new repository
Create a new GitHub repository by visiting repo.new . After creating a new repository, prepare and push your local application to GitHub by running the following commands in your terminal:
Deploy with Cloudflare Pages
Deploy your application to Pages:
- Log in to the Cloudflare dashboard and select your account.
- In Account Home, select Workers & Pages > Create application > Pages > Connect to Git.
- Select the new GitHub repository that you created and, in the Set up builds and deployments section, provide the following information:
| Configuration option | Value |
|---|---|
| Production branch | main |
| Build command | npm run build |
| Build directory | build |
After configuring your site, begin your first deploy. You should see Cloudflare Pages installing blog-frontend, your project dependencies, and building your site.
By completing this tutorial, you have created a full-stack Pages application.
Related resources
- Learn about Pages Functions routing