一、概述
API是Application Programming Interface(应用程序接口)的缩写,它是拿来描述一个类库的特征或是如何去运用它。
REST(Representational State Transfer)是Roy Fielding博士在2000年提出的软件软件架构模式。REST 是一种风格,而不是标准。因为既没有 REST RFC,也没有 REST 协议规范或者类似的规定。它只是提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。Roy Fielding 把 REST 定义成一种架构风格,其目标是“使延迟和网络交互最小化,同时使组件实现的独立性和扩展性最大化”。
二、GITHUB API
三、API设计
- 登录
curl -i https://api.blogexample.com -u "username":"password"
访问成功显示
HTTP/1.1 200 OK
{
"message": "GET success",
"userName": "user1"
}
失败显示
HTTP/1.1 401 Unauthorized
{
"message": "Bad credentials",
"documentation_url": "https://developer.blogexample.com"
}
- GET
获取所有的blog
GET /user/dxy/blogs
获取用户信息
GET /user/:username
- 发布博客
POST指令在服务器新建一个资源,提供文章的内容和标题
POST /:username/myblog/publish
用JSON形式发送标题和内容
curl -i 'https://api.blogexample.com/user1/myblog/publish' -d '{"title":"mytitle","content":"content...."}'
成功显示201
HTTP/1.1 201 Create
{
"blog": '{
"blogID":1,
"blogTitle":"t",
"content":"c"
}',
"link":"https:blogexample.com/myblog/1",
"createTime":"xxx"
"documentation_url": "https://developer.blogexample.com"
}
- 更新博客
指令:
PUT /:username/myblog/update
JSON:
curl -i 'https://api.blogexample.com/user1/myblog/update?blogid=01' -d '{"title":"mytitle","content":"content...."}'
更新成功后显示200
- 删除博客
删除指令
DELETE /:username/myblog/delete
JSON:
curl -i 'https://api.blogexample.com/user1/myblog/delete?blogid=05'
删除成功显示
HTTP/1.1 404 Not Found
{
"message": "blog doesn't exist",
"documentation_url": "https://developer.blogexample.com"
}
404显示不存在