本博客介绍REST风格的博客API设计。
REST
在 2000 年,Roy Fielding 提议使用表述性状态转移 (REST) 作为设计 Web 服务的体系性方法。 REST 是一种基于超媒体构建分布式系统的架构风格。 REST 独立于任何基础协议,并且不一定绑定到 HTTP。 但是,最常见的 REST 实现使用 HTTP 作为应用程序协议。
REST API 使用统一接口,这有助于分离客户端和服务实现。 对于基于 HTTP 构建的 REST API,统一接口包括使用标准 HTTP 谓词对资源执行操作。 最常见的操作是 GET、POST、PUT、PATCH 和 DELETE。
Blog
模仿优快云博客的页面组织和github的API,我们将博客划分为2个组织元:Users和Blogs。Users下为用户信息,Blogs下为各博文信息。
Users
usage:
GET api.blog.com/users/:username
字段设计
Fields | Meaning | Type |
---|---|---|
username | 用户名 | string |
id | 用户id | number |
url | 用户api的url | string |
html_url | 用户主页的url | string |
profile_url | 用户头像的url | string |
followers_number | 粉丝数 | number |
like_number | 获赞数 | number |
comment_number | 评论数 | number |
rank | 用户排名 | number |
original_blogs_number | 原创文章数 | number |
blogs_url | 博客的url | string |
columns_url | 用户专栏的url | string |
visited_number | 博客访问总数 | number |
company | 用户公司 | string |
例
{
"username": "username",
"id": 30189965,
"url": "https://api.blog.com/users/username",
"html_url": "https://blog.com/username",
"profile_url": "https://blog.com/profile/username.png",
"followers_number": 27,
"like_number": 35,
"comment_number": 15,
"visited_number": 60000,
"rank": 10020,
"original_blogs_number": 96,
"blogs_url": "https://api.blog.com/username/blogs",
"columns_url": "https://api.blog.com/columns/username",
"company": null
}
Blogs
usage:
GET api.blog.com/blogs/:username/:blogname
字段设计
Fields | Meaning | Type |
---|---|---|
id | 博客id | number |
name | 博客名字 | string |
owner | 博客作者 | json |
url | 博客api的url | string |
html_url | 博客网页的url | string |
original | 是否原创 | bool |
visited_number | 博客访问数 | number |
created_time | 博客发布时间 | number |
content | 内容 | string |
like_number | 点赞数 | number |
例
{
"name": "hello world",
"id": 3018996,
"url": "https://api.blog.com/blog/username/blogname",
"html_url": "https://blog.com/username/blogname",
"owner": {
"username": "username",
"id" : 158840,
"url": "https://api.blog.com/users/username"
},
"like_number": 5,
"visited_number": 600,
"created_time": 1574346009,
"original": true,
"content": "<h1>hello world</h1>"
}
References
-
优快云 blog