设计博客网站的API

什么是API

API是Application Programming Interface(应用程序接口)的缩写,它是拿来描述一个类库的特征或是如何去运用它。如今很多人常常参考一种通过网络分享应用数据的HTTP API。
当人们开始去实现自己的API接口时,问题就出现了:没有一个标准的方法来命名URL,人们总是要参考API才得知它是如何运作的。

什么是REST

REST是Representational State Transfer(表现层状态转移)的缩写,它是由罗伊·菲尔丁(Roy Fielding)提出的,是用来描述创建HTTP API的标准方法的,他发现这四种常用的行为(查看(view),创建(create),编辑(edit)和删除(delete))都可以直接映射到HTTP 中已实现的GET,POST,PUT和DELETE方法。

资源

资源是 REST 中最关键的抽象概念,它们是能够被远程访问的应用程序对象。一个资源就是一个标识单位,任何可以被访问或被远程操纵的东西都可能是一个资源。
任何重要的资源都应该能够通过一个唯一的标识被访问。RESTful HTTP 使用 URI 来识别资源。URI 提供了 Web 通用的识别机制,它包含了客户端直接与被引用的资源进行交互时需要的所有信息。

REST API 围绕资源设计,资源是可由客户端访问的任何类型的对象、数据或服务。

每个资源有一个标识符,即,唯一标识该资源的 URI。

客户端通过交换资源的表示形式来与服务交互。 许多 Web API 使用 JSON 作为交换格式。

博客网站API

网站地址:

https://api.exampleblog.com

API访问通过HTTP,数据发送与接收使用json。

登录
curl -u username https://api.exampleblog.com

输入账户名称,之后输入相应的密码,登录成功后可以不受限地访问博客网站。

用户名不存在或者密码不匹配时,返回401 Unauthorized

curl -i https://api.exampleblog.com -u invalid_name:invalid_password 
HTTP/1.1 401 Unauthorized
{
  "message": "Bad credentials",
}
获取简介

在获取所有资源时,不需要显示资源的全部属性,比如在获取某用户的所有博客时,显示博客的简要内容。

GET /user/articles

获得的响应大致为:

Status:200 OK
--------------------------
{
  "total_quntity": 52,
  "items": [
    {
      "articleID": 234819,
      "language": "Chinese",
      "title": "servicecomputing",
      "author": {
        "name": "gaozhen",
        "id": 1734,
        "url": "blog url",
        "type": "User"
      },
      "article_url": "article url"
      "private": false,
      "description": "...",
      "visits": 105,
      "words": 1024,
      "content":"...."
      "created_at": "2018-05-23T23:42:51Z",
      "updated_at": "2019-05-16T17:25:15Z",
    },
    ...
  ]
}

获取博客具体内容

当想要查看某篇具体博客时,获取该资源的全部属性。

GET /user/articles/23481
在列表中搜索文章
GET /user/search/articles?title=servicecomputing&order=visits

有两个参数,文章名和排序方式,这样能找到名字为servicecomputing的文章,按阅读量排序。

错误

发送无效或错误的JSON会得到400 Bad Request响应。

HTTP/1.1 400 Bad Request
Content-Length: 45

{"message":"Body should be a JSON object"}

发送无效的字段得到 422 Unprocessable Entity响应。

HTTP/1.1 422 Unprocessable Entity
Content-Length: 132

{
  "message": "Validation Failed",
  "errors": [
    {
      "resource": "Issue",
      "field": "title",
      "code": "missing_field"
    }
  ]
}
发布文章
POST /user/articles
data 
{
	"title":"",
	"content":"",
	"private": true/false,
	"description":""
}
curl -u -i -d '{"title":"...","content":"...","private":false,"description":"..."}' https://api.example.com/gaozhen/articles

修改文章
PUT /user/articles/{id}
data //发布文章的数据参数
{
	"title":"",
	"content":"",
}
curl -u -i -d '{"title":"...","content":"..."}' https://api.example.com/gaozhen/articles/15/

删除文章
DELETE /user/articles/{id}
添加评论
POST /user/articleID/comment
data
{
	"content":"..."
}
curl -i -u https://api.exampleblog/gaozhen/15/comment -d {"content":"..."}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值