DEV Community

Cover image for How to Use MockAPI with a Next.js App When the Backend Is Not Ready
Rajesh Kumar Yadav
Rajesh Kumar Yadav

Posted on

How to Use MockAPI with a Next.js App When the Backend Is Not Ready

As a frontend developer, it’s common to find yourself waiting on the backend to complete its APIs before you can fully implement the frontend. Fortunately, tools like MockAPI.io can help you simulate a working backend, allowing you to proceed with coding the frontend part of your application without delays.

In this blog post, we’ll explore how to integrate MockAPI.io into a new Next.js app to mock backend data while the real backend is under development.

What is MockAPI.io?

MockAPI.io is an easy-to-use platform that allows developers to create mock REST APIs. With this tool, you can simulate real API endpoints, define resources (data models), and test your application without needing an actual backend. It’s especially useful for frontend development and prototyping.

Why Use MockAPI.io?

Work Independently: You don’t need to wait for backend development to be finished before you start working on the frontend.
Faster Iterations: It allows you to quickly mock endpoints and test different scenarios.
API Simulation: You can simulate the structure of the real API, making the switch to the actual backend smooth when it’s ready.
Great for Collaboration: Allows you to work closely with backend developers by defining expected API structures.

Step-by-Step Guide: Setting Up MockAPI.io with a Next.js App

1. Create a New Next.js App
First, let’s create a new Next.js project. Run the following command to initialize the app:

npx create-next-app@latest mockapi-nextjs-app
Enter fullscreen mode Exit fullscreen mode

Move into your project directory:

cd mockapi-nextjs-app
Enter fullscreen mode Exit fullscreen mode

Start the development server to make sure everything is set up properly:

npm run dev
Enter fullscreen mode Exit fullscreen mode

Your app should now be running on http://localhost:3000.

2. Create a MockAPI.io Account
Next, sign up at MockAPI.io if you don’t already have an account. Once logged in, you can create a new project by clicking the Create New Project button.

3. Create a Resource (Endpoint)
Once your project is created, define a resource, such as "Users":

Click Add Resource and name it "Users".
Define properties such as id, name, email, and avatar (for user profile pictures).
MockAPI.io will auto-generate some fake user data for you.
You’ll now have a list of API endpoints like:

GET /users - Get all users.
POST /users - Create a new user.
PUT /users/{id} - Update a user.
DELETE /users/{id} - Delete a user.
The base URL for your API will look something like https://mockapi.io/projects/{your_project_id}/users.

4. Fetch Data from MockAPI in Next.js
Now that you have your mock API, you can integrate it into your Next.js app using Next.js’s getServerSideProps or getStaticProps. Let’s fetch data from the /users endpoint and display it in the app.

Here’s how you can use getServerSideProps in the Next.js project to fetch user data from MockAPI.io.

Create a new page in pages/users.js:

import React from 'react';
import axios from 'axios';

const Users = ({ users }) => {
  return (
    <div>
      <h1>User List</h1>
      <ul>
        {users.map((user) => (
          <li key={user.id}>
            <img src={user.avatar} alt={`${user.name}'s avatar`} width="50" />
            {user.name} - {user.email}
          </li>
        ))}
      </ul>
    </div>
  );
};

// Fetch data on each request (SSR)
export async function getServerSideProps() {
  try {
    const response = await axios.get('https://mockapi.io/projects/{your_project_id}/users');
    const users = response.data;

    return {
      props: { users }, // Will be passed to the page component as props
    };
  } catch (error) {
    console.error("Error fetching users:", error);
    return {
      props: { users: [] },
    };
  }
}

export default Users;
Enter fullscreen mode Exit fullscreen mode

In this example:

getServerSideProps makes a server-side request to fetch user data from the mock API endpoint.
The user list is rendered with profile pictures, names, and emails.

5. Test the Mock API Integration
Run the development server to test the integration:

npm run dev
Enter fullscreen mode Exit fullscreen mode

Navigate to http://localhost:3000/users, and you should see a list of users fetched from MockAPI.io displayed in your Next.js app.

6. Adding New Features: Create a User
Let’s add a feature where you can create a new user via a form in your Next.js app. We’ll send a POST request to the MockAPI endpoint.

Create a form component in pages/add-user.js:

import { useState } from 'react';
import axios from 'axios';

const AddUser = () => {
  const [name, setName] = useState('');
  const [email, setEmail] = useState('');
  const [avatar, setAvatar] = useState('');

  const handleSubmit = async (e) => {
    e.preventDefault();

    try {
      const response = await axios.post('https://mockapi.io/projects/{your_project_id}/users', {
        name,
        email,
        avatar
      });
      console.log("User added:", response.data);
    } catch (error) {
      console.error("Error adding user:", error);
    }
  };

  return (
    <div>
      <h1>Add New User</h1>
      <form onSubmit={handleSubmit}>
        <input
          type="text"
          placeholder="Name"
          value={name}
          onChange={(e) => setName(e.target.value)}
        />
        <input
          type="email"
          placeholder="Email"
          value={email}
          onChange={(e) => setEmail(e.target.value)}
        />
        <input
          type="text"
          placeholder="Avatar URL"
          value={avatar}
          onChange={(e) => setAvatar(e.target.value)}
        />
        <button type="submit">Add User</button>
      </form>
    </div>
  );
};

export default AddUser;
Enter fullscreen mode Exit fullscreen mode

Now, when you submit the form, a new user will be created in MockAPI.

7. Transition to the Real Backend
Once your actual backend is ready, replacing the mock API is simple. Update the base URL in your axios requests to point to the real backend, and your app should work seamlessly without any changes in the structure.

Conclusion

Using MockAPI.io with Next.js is an excellent way to build and test your frontend application even when the backend is still in progress. By simulating real API interactions, you can keep the frontend development moving forward and ensure a smooth transition once the actual backend is complete.

Whether you’re working on a large team or a solo project, MockAPI.io is a valuable tool for frontend developers. Start using it today to streamline your development process!

Top comments (0)