美文网首页
“真实世界”全栈开发-2.4-单篇博文相关API

“真实世界”全栈开发-2.4-单篇博文相关API

作者: 桥头堡2015 | 来源:发表于2018-02-04 10:13 被阅读13次

本文讨论的API对应应用中与单篇博文相关的功能。

博文对象

我们首先定义表示博文信息的JSON对象,称为Article对象。

{
  "article": {
    "slug": "how-to-train-your-dragon",
    "title": "How to train your dragon",
    "description": "Ever wonder how?",
    "body": "It takes a Jacobian",
    "createdAt": "2016-02-18T03:22:56.637Z",
    "updatedAt": "2016-02-18T03:48:35.824Z",
    "favorited": false,
    "favoritesCount": 0,
    "author": {
      "username": "jake",
      "bio": "I work at statefarm",
      "image": "https://i.stack.imgur.com/xHWG8.jpg",
      "following": false
    }
  }
}

发表博文

端点为POST /api/articles,需要验证信息,返回一个Article对象。

请求体的实例:

{
  "article": {
    "title": "How to train your dragon",
    "description": "Ever wonder how?",
    "body": "You have to believe",
    "tagList": ['reactjs', 'angularjs', 'dragons']
  }
}

其中必须包含的字段:"title""description""body"

可以包含的字段: "tagList",其值应为字符串数组。

读取博文

端点为GET /api/articles/:slug,不需要验证信息,返回一个Article对象。

更新博文

端点为PUT /api/articles/:slug,需要验证信息,返回更新后的Article对象。

请求体实例:

{
  "article": {
    "title": "Did you train your dragon?"
  }
}

可以包含的字段:"title""description""body"

"title"有所更改时,"slug"也随之更改。

删除博文

端点为DELETE /api/articles/:slug,需要验证信息。

当一篇博文被成功删除后,后端会返回状态码为200的响应,响应体中包含被删除的Article。如果后端之后再次收到删除该篇博文的请求,遵循REST规范,它会返回404的响应。点赞、评论,与之类似。

为博文点赞

端点为POST /api/articles/:slug/favorite,需要验证信息,返回对应的Article对象。

无需其他参数。

取消点赞

端点为DELETE /api/articles/:slug/favorite,需要验证信息,返回该Article对象。

无需其他参数。

重复的请求会收到404响应。

评论对象

称为Comment对象。

{
  "comment": {
    "id": 1,
    "body": "It takes a Jacobian",
    "createdAt": "2016-02-18T03:22:56.637Z",
    "author": {
      "username": "jake",
      "bio": "I work at statefarm",
      "image": "https://i.stack.imgur.com/xHWG8.jpg",
      "following": false
    }
  }
}

发表评论

POST /api/articles/:slug/comments,需要验证信息,返回新发表的Comment对象。

请求体实例:

{
  "comment": {
    "body": "His name was my name too."
  }
}

必有字段:"body"

删除评论

端点为DELETE /api/articles/:slug/comments/:id,需要验证信息,返回对应的Comment对象。

无需其他参数。

重复的请求会收到404响应。

读取某篇博文的评论

端点为GET /api/articles/:slug/comments,验证信息可有可无。

响应体并不是Comment对象,而是满足如下结构:

{
  "comments": [{
    "id": 1,
    "body": "It takes a Jacobian",
    "createdAt": "2016-02-18T03:22:56.637Z",
    "author": {
      "username": "jake",
      "bio": "I work at statefarm",
      "image": "https://i.stack.imgur.com/xHWG8.jpg",
      "following": false
    }
  }]
}

标签的创建与删除

标签的随着博文的发表而创建;当某个标签下的所有博文都被删除时,该标签页会被删除。

读取所有的标签

端点为GET /api/tags,无需验证信息,返回如下结构的响应体:

{
  "tags": [
    "reactjs",
    "angularjs"
  ]
}

相关文章

网友评论

      本文标题:“真实世界”全栈开发-2.4-单篇博文相关API

      本文链接:https://www.haomeiwen.com/subject/njqmzxtx.html