文章目录
作业要求
模仿 Github,设计一个博客网站的 API
参考网址及博客
REST简介
在 2000 年,Roy Fielding 提议使用表述性状态转移 (REST) 作为设计 Web 服务的体系性方法。 REST 是一种基于超媒体构建分布式系统的架构风格。 REST 独立于任何基础协议,并且不一定绑定到 HTTP。 但是,最常见的 REST 实现使用 HTTP 作为应用程序协议。
基于 HTTP 的 REST 的主要优势在于它使用开放标准,不会绑定 API 的实现,也不会将客户端应用程序绑定到任何具体实现。
具体实现
博客网址
假设该博客网址为:https://api.testblog.com
一、登陆
- 命令
curl -u username -p password https://api.testblog.com
- 结果
返回的状态码 | 对应结果 |
---|---|
2xx | 请求成功 |
4xx | 请求异常 |
- 可能的几种错误:
返回的状态码 | 对应错误 |
---|---|
401 | 密码不正确 |
403 | 访问过于频繁 |
404 | 账户不存在 |
- 例如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.testBlog/#abuse-rate-limits"
}
二、请求资源
通过GET命令请求资源,返回JSON格式的数据。
1. 查看用户的所有博客基本信息
curl -i "https://api.testblog.com/username"
2. 查看用户的个人信息:
curl -i "https://api.testblog.com/username/info"
3. 查看评论
curl -i "https://api.testblog.com/username/articlename/comment"
4. 查找博客
curl -i "https://api.testblog.com/username/search?key=yourkeyword"
三、新建资源
通过POST命令新建一个资源
1. 发布新博客
curl -i "https://api.testblog.com/username/new" -d "{"title":"yourtitle","content":"yourcontent","date":"date"}"
2. 发布新评论
curl -c "your_comments" "https://api.testblog.com/username/articlename/comment/new"
替换资源
通过PUT命令替换一个资源,需上传更新后的博客内容和所在页面。
1. 更新博客
curl -i "https://api.testblog.com/username/articlename/update" -d "{"title":"yourtitle","content":"yourcontent","date":"date"}"
2. 更新评论
curl -c "your_comments" "https://api.testblog.com/username/articlename/comment/update"
删除资源
利用DELETE命令在服务器删除一个资源。
1. 删除博客
curl -i "https://api.testblog.com/username/articlename/delete"