JSONPlaceholder 使用手册

JSONPlaceholder

Posted by Claire on December 26, 2023

官方使用指南快速索引»点这里 快速导览:

什么是JSONPlaceholder?有啥用?

这是一个开放可调用的API接口,增、改、查、分页查一个简单资源

什么时候需要?

  • 当你需要测试一种API调用的方式
  • 当你想模拟一些API json数据
  • 当你是一个妥妥的新手

你可能需要它

如何使用JSONPlaceholder?

可以使用:

  • 浏览器直接访问Get请求,比如
/posts/1/comments
/albums/1/photos
/users/1/albums
/users/1/todos
/users/1/posts
  • 可以使用编程语言请求接口

通用接口:

接口 对象类型 结构 公共默认数据量
/posts 帖子 {"userId":1,"id":1,"title":"string","body":"string"} 100个
/comments 评论 {"postId":1,"id":1,"name":"string","email":"string","body":"string"} 500个
/albums 专辑 {"userId":1,"id":1,"title":"string"} 100个
/photos 照片 {"albumId":1,"id":1,"title":"string","url":"string","thumbnailUrl":"string"} 5000个
/todos 待办 {"userId":1,"id":1,"title":"string","completed":false} 200个
/users 用户 {"id":1,"name":"string","username":"string","email":"string","address":{"street":"string","suite":"string","city":"string","zipcode":"string","geo":{"lat":"string","lng":"string"}},"phone":"string","website":"string","company":{"name":"string","catchPhrase":"string","bs":"string"}} 10个

自己测试的话,以上数据结构各取所需即可

以上几种数据类型也有关联关系,比如:

/comments?postId=1 == /posts/1/comments
/albums/1/photos
/users/1/albums
/users/1/todos
/users/1/posts

以下使用/todos 为例演示增删改查

GET	/posts
GET	/posts/1
GET	/posts/1/comments
GET	/comments?postId=1
POST /posts
PUT	/posts/1
PATCH	/posts/1
DELETE	/posts/1

关于“增”

POST /posts

POST /posts HTTP/1.1
Host: jsonplaceholder.typicode.com
Content-Type: application/json
Content-Length: 75

{
    "userId": 2,
    "id": 1,
    "title": "帖子101",
    "body": "帖子的内容"
}
----
response:
{
    "userId": 2,
    "id": 101,
    "title": "帖子101",
    "body": "帖子的内容"
}

ID会自动生成,类似数据库里面的自增,并且会返回增加的对象

关于“改”

PATCH /posts/1

PATCH /posts/101 HTTP/1.1
Host: jsonplaceholder.typicode.com
Content-Type: application/json
Content-Length: 76

{
    "userId": 2,
    "id": 1,
    "title": "帖子102",
    "body": "帖子的内容2"
}
----
response:
{
    "userId": 2,
    "id": 1,
    "title": "帖子102",
    "body": "帖子的内容2"
}

根据ID修改内容,会返回修改后的内容

关于“查”

GET /posts 查全部,默认是100条 GET /posts/1 根据ID查询对象

GET /posts/1 HTTP/1.1
Host: jsonplaceholder.typicode.com
X-Total-Count: 10

关于“删”

DELETE /posts/1 根据ID删除对象

DELETE /posts/100 HTTP/1.1
Host: jsonplaceholder.typicode.com

http response code 200,无返回值

关于“分页查”

GET /posts?_start=10&_limit=10 使用query param分页查

GET /posts?_start=10&_limit=10 HTTP/1.1
Host: jsonplaceholder.typicode.com

There’s also a custom header X-Total-Count in the response.

关于“根据ID查多个”

/posts?id=2&id=5&id=10&id=12 根据多个ID查询相应的posts /posts?&userId=2&userId=5&userId=10&userId=12 根据多个userId查询相应的posts

GET /posts?userId=2&userId=5&userId=10&userId=12 HTTP/1.1
Host: jsonplaceholder.typicode.com
X-Total-Count: 10

尝试自己搭一个?

fork me here, start quickly

rename the request url https://my-json-server.typicode.com/[your name]/[your project name], like https://my-json-server.typicode.com/CzyerChen/jsonplaceholderdemo

like default posts, you can call GET https://my-json-server.typicode.com/CzyerChen/jsonplaceholderdemo/posts, and you will get results.

Awesome! you can mock data and write into db.json.

like the demo in https://github.com/CzyerChen/jsonplaceholderdemo, call https://my-json-server.typicode.com/CzyerChen/jsonplaceholderdemo/userinfo and return the data

[
  {
    "id": 1,
    "userName": "string",
    "age": 11,
    "mail": "string@demo.com",
    "sex": 0,
    "active": 1
  },
  {
    "id": 2,
    "userName": "string",
    "age": 12,
    "mail": "string@demo.com",
    "sex": 1,
    "active": 0
  },
  {
    "id": 3,
    "userName": "string",
    "age": 13,
    "mail": "string@demo.com",
    "sex": 2,
    "active": 1
  }
]

扩展的可能?

增加简单的认证接口?比如jwt/oauth2?

issues 中也有提到,是否能够提供初级使用者所需的认证类接口,或许可以自己根据源码来开发哦