JSONPlaceholder
JSONPlaceholder is a simple fake REST API for testing and prototyping.
It's like an image placeholder but for web developers.
JSONPlaceholder is powered by JSON Server.
Why?
Most of the time when trying a new library, hacking a prototype or following a tutorial, I found myself in need of some data.
I didn't like the idea of using some public API because I had the feeling that I was spending more time registering a client and understanding a complex API than focusing on my task.
But I liked the idea of image placeholders for web designers. So I decided to code a little Express server inspired by that and here is JSONPlaceholder.
You can find it running here and are free to use it in your developments: http://jsonplaceholder.typicode.com.
Or you can run it locally:
$ npm install -g jsonplaceholder
$ jsonplaceholder
I hope you will find it useful.
Features
- No registration
- Zero-config
- Basic API
- "Has many" relationships
- Filters and nested resources
- Cross-domain (CORS and JSONP)
- Supports GET, POST, PUT, PATCH, DELETE and OPTIONS verbs
- Compatible with Backbone, AngularJS, Ember, ...
Available resources
Let's start with resources, JSONPlaceholder provides the usual suspects:
- Posts http://jsonplaceholder.typicode.com/posts/1
- Comments http://jsonplaceholder.typicode.com/comments/1
- Albums http://jsonplaceholder.typicode.com/albums/1
- Photos http://jsonplaceholder.typicode.com/photos/1
- Users http://jsonplaceholder.typicode.com/users/1
- Todos http://jsonplaceholder.typicode.com/todos/1
How to
Here's some code using jQuery showing what can be done with JSONPlaceholder. Since GitHub loads jQuery, you can simply copy and paste these examples in a console.
Showing a resource
$;
Listing resources
$;
Creating a resource
// POST adds a random id to the object sent$; /* will return{ id: 101, title: 'foo', body: 'bar', userId: 1}*/
Note: the resource will not be really created on the server but it will be faked as if.
Updating a resource
$; /* will return{ id: 1 title: 'foo', body: 'bar', userId: 1}*/
$; /* will return{ id: 1 title: 'foo', body: 'quia et suscipit [...]', userId: 1}*/
Note: the resource will not be really updated on the server but it will be faked as if.
Deleting a resource
$;
Note: the resource will not be really deleted on the server but it will be faked as if.
Filtering resources
Basic filtering is supported through query parameters.
// Will return all the posts that belong to the first user$;
Nested resources
One level of nested route is available.
$;// Which is equivalent to /comments?postId=1
Here's the list of available nested routes:
- http://jsonplaceholder.typicode.com/posts/1/comments
- http://jsonplaceholder.typicode.com/albums/1/photos
- http://jsonplaceholder.typicode.com/users/1/albums
- http://jsonplaceholder.typicode.com/users/1/todos
- http://jsonplaceholder.typicode.com/users/1/posts
JSONP request
$;