Published Nov 6, 2023 ⦁ 4 min read

Mock and Test APIs With jsonplaceholder

Introduction

Rapid prototyping and testing frontend code is crucial for modern web development workflows. However, frontend work is often blocked by backend dependencies and the need to build real APIs first. This is where jsonplaceholder comes in.

jsonplaceholder provides a free online REST API that allows developers to easily mock backends and APIs. Without needing real implementations, you can quickly populate apps with fake data to test UIs, handle edge cases, and accelerate development.

With predefined endpoints for typical resources like users, posts, and comments, jsonplaceholder simulates a production API for fetching and displaying data. The built-in endpoints support CRUD operations through GET, POST, PUT, PATCH, and DELETE requests. This enables fully testing workflows for creating, reading, updating, and deleting data.

Since jsonplaceholder requires no complex setup, you can immediately integrate responses into your frontend code. This rapid prototyping capability allows iterating on UIs without slowing down for backends. jsonplaceholder is a powerful tool for testing fetch calls, UI rendering, authentication flows, and more.

Getting Started with jsonplaceholder

Integrating the jsonplaceholder API is straightforward for any tech stack. Below are examples using the native Fetch API and within a React application.

Using the Fetch API

The Fetch API provides a simple way to fetch jsonplaceholder data without libraries:

// Get list of posts
fetch('https://jsonplaceholder.typicode.com/posts') 

// Get specific post 
fetch('https://jsonplaceholder.typicode.com/posts/1')  

// Create new post
fetch('https://jsonplaceholder.typicode.com/posts', {
  method: 'POST',
  body: JSON.stringify({
    title: 'New Post',
    body: 'Content here',
    userId: 1  
  })
})

We make requests to endpoints, handle responses, and use the JSON data. Options like method, headers, and body can be passed in as well.

Integrating with React

In React, hooks like useState and useEffect enable fetching and displaying jsonplaceholder data:

// posts.js

import { useState, useEffect } from 'react';

export default function Posts() {
  const [posts, setPosts] = useState([]);

  useEffect(() => {
    const fetchPosts = async () => {
      const response = await fetch('https://jsonplaceholder.typicode.com/posts');
      const data = await response.json();
      setPosts(data);
    };
    
    fetchPosts();
  }, []);

  return (
    <div>
      {posts.map(post => (
        <Post key={post.id} post={post} />
      ))}
    </div>
  );
}

This pattern fetches posts on mount and displays them in Post components. We can reuse it to fetch any jsonplaceholder data.

Key Features of jsonplaceholder

jsonplaceholder provides a flexible API for mocking various responses and edge cases:

Endpoints for Common Resources

jsonplaceholder offers built-in endpoints for typical API resources:

  • Posts - Example blog or news articles
  • Comments - Replies to posts
  • Albums - Photo albums
  • Photos - Pictures in albums
  • Todos - Task list items
  • Users - Author profiles

These entities allow rapid prototyping of feeds, blogs, galleries, task apps, user dashboards, and more.

Configurable Responses

In addition to default data, jsonplaceholder lets you customize responses:

  • Add delays to simulate network latency
  • Set status codes like 404 or 500 to test error handling
  • Custom headers like Content-Type
  • Repeat data for pagination
  • Timeout requests to simulate failures

These options are great for handling edge cases and building resilient UIs.

Use Cases

Let's explore some example use cases:

Social Media Feed Prototype

  • Fetch posts and comments to mock feeds
  • Add delays to simulate loading latest data
  • Show loading indicators during fetches
  • POST new comments to test creating content

Blog or News Website

  • Use posts for articles and comments for discussions
  • Paginate posts to mimic newest first ordering
  • Return 404s for invalid post IDs
  • Allow adding new comments

Conclusion

jsonplaceholder provides a simple yet powerful tool for rapidly mocking APIs and prototyping UIs without real backends. With built-in support for typical API resources and configurable responses, jsonplaceholder accelerates frontend testing and development.

Check out DevHunt to discover and promote more excellent developer tools like jsonplaceholder.