本文讨论的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"
]
}
网友评论