博客网站的REST API设计
作业题目
博客网站的REST API设计
要求
仿造github设计一个博客网站的REST API
REST API介绍
REST是Representational State Transfer(表现层状态转移)的缩写,指的是查看,创建,编辑,删除这几种功能,都能由HTTP中已实现的GET,POST,PUT,DELETE等方法来表示。
API是Application Programming Interface(应用程序接口)的缩写,用来帮助我们了解我们该如何运用一个库。
设计一个博客网站的API
假设该博客网站可以通过https://api.blogexample.com
进行访问。
获取用户所有的博客的摘要
在csdn中,访问个人主页即可看到用户所有文章的摘要,因此,我们可以如下表示:
GET /username
如,获得用户heney的所有文章摘要
GET /username/henry
获得一篇文章的详细内容
在csdn中,文章以编号的方式来表示,假设我们要获得henry用户的编号为17341734的文章的详细内容,我们可以如下表示:
GET /username/henry/article/17341734
获得一篇文章的评论内容
假设我们要获得henry用户的编号为17341734的文章的评论,我们可以如下表示:
GET /username/henry/article/17341734/comments
更新一篇文章
更新一篇文章,可以采用PUT方法,需要用户名以及文章编号
PUT /username/henry/article/17341734
发布一篇文章
发布一篇文章,可以采用POST方法
POST /username/henry/article
删除一篇文章
删除一篇文章可以采用DELETE,需要文章的编号以及用户名
DELETE /username/henry/article/17341734
获取某月文章
需要获得某一月的文章,需要用户名以及月份,可以采用GET方法,假设我们要获得henry12月发布的文章
GET /username/henry/months/12
认证登陆
curl -u username https://api.blogexample.com
错误信息
403:访问过于频繁或者是未通过身份验证等
访问过于频繁:
HTTP/1.1 403 Forbidden
Content-Type: application/json; charset=utf-8
Connection: close
{
"message": "You have triggered an abuse detection mechanism and have been temporarily blocked from content creation. Please retry your request again later.",
"documentation_url": "https://api.blogexample.com/#abuse-rate-limits"
}
未用户认证:
curl -iH 'User-Agent: ' https://api.blogexample.com
HTTP/1.0 403 Forbidden
Connection: close
Content-Type: text/html
Request forbidden by administrative rules.
Please make sure your request has a User-Agent header.
Check https://api.blogexample.com for other possible causes.
401:验证无效时会返回
curl -i https://api.blogexample.com -u foo:bar
HTTP/1.1 401 Unauthorized
{
"message": "Bad credentials",
"documentation_url": "https://api.blogexample.com"
}