mirror of
https://github.com/typicode/json-server.git
synced 2025-07-28 12:43:18 +08:00
Update README.md
This commit is contained in:
180
README.md
180
README.md
@ -1,120 +1,48 @@
|
|||||||
<p align="center">
|
|
||||||
<img height="56" width="64" src="http://i.imgur.com/QRlAg0b.png"/>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
# JSON Server [](https://travis-ci.org/typicode/json-server) [](http://badge.fury.io/js/json-server)
|
# JSON Server [](https://travis-ci.org/typicode/json-server) [](http://badge.fury.io/js/json-server)
|
||||||
|
|
||||||
> Give it a JSON or JS file and it will serve it through REST routes.
|
Get a full fake REST API with __zero coding__ in __less than 30 seconds__ (seriously)
|
||||||
|
|
||||||
Created with <3 for front-end developers who need a flexible back-end for quick prototyping and mocking.
|
Created with <3 for front-end developers who need a quick back-end for prototyping and mocking.
|
||||||
|
|
||||||
_Powers [JSONPlaceholder](http://jsonplaceholder.typicode.com)_
|
Powers [JSONPlaceholder](http://jsonplaceholder.typicode.com)
|
||||||
|
|
||||||
## Usage
|
## Example
|
||||||
|
|
||||||
### CLI
|
Create a `db.json` file
|
||||||
|
|
||||||
Create a `db.json` file:
|
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
{
|
{
|
||||||
"posts": [
|
"posts": [
|
||||||
{ "id": 1, "body": "foo" }
|
{ "id": 1, "title": "json-server", "author": "typicode" }
|
||||||
]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Then run `json-server db.json` and go to `http://localhost:3000/posts/1`.
|
|
||||||
|
|
||||||
You should get `{ "id": 1, "body": "foo" }`.
|
|
||||||
|
|
||||||
### Module
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
var server = require('json-server');
|
|
||||||
|
|
||||||
server({
|
|
||||||
posts: [
|
|
||||||
{ id: 1, body: 'foo' }
|
|
||||||
]
|
|
||||||
}).listen(3000);
|
|
||||||
```
|
|
||||||
|
|
||||||
## Features
|
|
||||||
|
|
||||||
* Lets you use plain JSON or simple JS file
|
|
||||||
* Supports __GET__ but also __POST__, __PUT__, __DELETE__ and even __PATCH__ requests
|
|
||||||
* Can be used from anywhere through __cross domain__ requests (JSONP or CORS)
|
|
||||||
* Can load remote JSON files ([JSON Generator](http://www.json-generator.com/), ...)
|
|
||||||
* Can be deployed on Nodejitsu, Heroku, ...
|
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ npm install -g json-server
|
|
||||||
```
|
|
||||||
|
|
||||||
## CLI options
|
|
||||||
|
|
||||||
```bash
|
|
||||||
json-server <source>
|
|
||||||
|
|
||||||
Examples:
|
|
||||||
json-server db.json
|
|
||||||
json-server file.js
|
|
||||||
json-server http://example.com/db.json
|
|
||||||
|
|
||||||
|
|
||||||
Options:
|
|
||||||
--help, -h Show help
|
|
||||||
--version, -v Show version number
|
|
||||||
--port, -p Set port [default: 3000]
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Input
|
|
||||||
|
|
||||||
Here's 2 examples showing how to format JSON or JS seed file:
|
|
||||||
|
|
||||||
__JSON__
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
{
|
|
||||||
"posts": [
|
|
||||||
{ "id": 1, "body": "foo" },
|
|
||||||
{ "id": 2, "body": "bar" }
|
|
||||||
],
|
],
|
||||||
"comments": [
|
"comments": [
|
||||||
{ "id": 1, "body": "baz", "postId": 1 },
|
{ "id": 1, "body": "some comment", "postId": 1 }
|
||||||
{ "id": 2, "body": "qux", "postId": 2 }
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
__JS__
|
Start JSON Server
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ json-server db.json
|
||||||
|
```
|
||||||
|
|
||||||
|
Now if you go to [http://localhost:3000/posts/1](), you will get:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
module.exports = function() {
|
{
|
||||||
var data = {};
|
"id": 1,
|
||||||
|
"body": "foo"
|
||||||
data.posts = [];
|
|
||||||
data.posts.push({ id: 1, body: 'foo' });
|
|
||||||
//...
|
|
||||||
|
|
||||||
return data;
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
JSON Server expects JS files to export a function that returns an object.
|
## Routes
|
||||||
|
|
||||||
JS files are useful if you need to programmaticaly create a lot of data.
|
In fact, you instantly get all these routes:
|
||||||
|
|
||||||
## Available routes
|
|
||||||
|
|
||||||
Let's say we have `posts`, here's the routes you can use.
|
|
||||||
|
|
||||||
```
|
```
|
||||||
GET /posts
|
GET /posts
|
||||||
GET /posts?title=jsonserver&author=typicode
|
GET /posts?title=json-server&author=typicode
|
||||||
GET /posts/1/comments
|
GET /posts/1/comments
|
||||||
GET /posts/1
|
GET /posts/1
|
||||||
POST /posts
|
POST /posts
|
||||||
@ -149,13 +77,73 @@ Returns database.
|
|||||||
GET /db
|
GET /db
|
||||||
```
|
```
|
||||||
|
|
||||||
Returns default index file or content of `./public/index.html` (useful if you need to set a custom home page).
|
Returns default index file or serves `./public` directory.
|
||||||
|
|
||||||
```
|
```
|
||||||
GET /
|
GET /
|
||||||
```
|
```
|
||||||
|
|
||||||
For more routes usage examples, have a look at [JSONPlaceholder](https://github.com/typicode/jsonplaceholder)'s README.
|
## Install
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ npm install -g json-server
|
||||||
|
```
|
||||||
|
|
||||||
|
## Extras
|
||||||
|
|
||||||
|
### Static file server
|
||||||
|
|
||||||
|
You can use JSON Server to serve your HTML, JS and CSS, simply create a `./public` directory.
|
||||||
|
|
||||||
|
### Access from anywhere
|
||||||
|
|
||||||
|
You can access your fake API from anywhere using CORS and JSONP.
|
||||||
|
|
||||||
|
### Remote schema
|
||||||
|
|
||||||
|
You can load remote schemas:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ json-server http://example.com/file.json
|
||||||
|
$ json-server http://jsonplaceholder.typicode.com/db
|
||||||
|
```
|
||||||
|
|
||||||
|
### JS file support
|
||||||
|
|
||||||
|
You can use JS to programmatically create data:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
module.exports = function() {
|
||||||
|
data = { users: [] }
|
||||||
|
// Create 1000 users
|
||||||
|
for (var i = 0; i < 1000; i++) {
|
||||||
|
data.users.push({ name: 'user' + i })
|
||||||
|
}
|
||||||
|
return data
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ json-server index.js
|
||||||
|
```
|
||||||
|
|
||||||
|
### Module
|
||||||
|
|
||||||
|
You can use JSON Server as a module:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
var server = require('json-server')
|
||||||
|
|
||||||
|
server({
|
||||||
|
posts: [
|
||||||
|
{ id: 1, body: 'foo' }
|
||||||
|
]
|
||||||
|
}).listen(3000)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Deployment
|
||||||
|
|
||||||
|
You can deploy JSON Server. For example, [JSONPlaceholder](http://jsonplaceholder.typicode.com) is an online fake API powered by JSON Server and running on Heroku.
|
||||||
|
|
||||||
## Links
|
## Links
|
||||||
|
|
||||||
@ -169,3 +157,7 @@ For more routes usage examples, have a look at [JSONPlaceholder](https://github.
|
|||||||
* [Grunt JSON Server](https://github.com/tfiwm/grunt-json-server)
|
* [Grunt JSON Server](https://github.com/tfiwm/grunt-json-server)
|
||||||
* [docker-json-server](https://github.com/clue/docker-json-server)
|
* [docker-json-server](https://github.com/clue/docker-json-server)
|
||||||
* [JSON Server GUI](https://github.com/naholyr/json-server-gui)
|
* [JSON Server GUI](https://github.com/naholyr/json-server-gui)
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
MIT - [Typicode](https://github.com/typicode)
|
||||||
|
Reference in New Issue
Block a user