用REST風格設計部落格API

2021-09-29 21:02:50 字數 4692 閱讀 5246

模仿 github,設計乙個部落格**的 api

1) 獲取自己部落格下的所有文章

get /api/v1/user/articles
檢視文章時,使用get方法。這裡用單數user指代自己乙個人且不用指定自己使用者名稱或者id。v1代表版本號。

響應內容

]}失敗響應

}

2) 根據文章id獲取自己的文章
get /api/v1/user/articles/:id
這裡把文章名,即:(article)id看作是層級資料。

響應內容

]}失敗響應

}

3) 獲取自己某主題分類下的所有文章
get /api/v1/user/articles/topics
其中,topics表示主題型別。

響應內容

]}失敗響應

}

4) 建立文章
post api/v1/user/articles
建立新的文章時,採用post方法。用單數user指代自己乙個人,不用指定自己使用者名稱或者id。其中user是主資源,article是子資源。

響應內容

]}失敗響應

}

5) 修改文章
put api/v1/user/articles/:id
修改一篇文章時,採用put方法。因為只能使用者自己修改,所以只需要層次資料:id來指明要修改的文章。用單數user指代自己乙個人,不用指定自己使用者名稱或者id。

響應內容

]}失敗響應

}

6) 刪除文章
delete api/v1/user/articles/:id
刪除一篇文章時,採用delete方法。和修改時一樣,因為只能使用者自己刪除文章,所以只需要層次資料:id來指明要修改的文章。用單數user指代自己乙個人,不用指定自己使用者名稱或者id。

響應內容

]}失敗響應

}

2. 針對所有使用者部落格時:

1) 獲取指定使用者的所有文章

get api/v1/users/:username/articles
響應內容

]}失敗響應

}

檢視文章時,使用get方法。這一條對比上面幾條,user改為了users,指代所有使用者。:username是層次資料,指特定使用者,是唯一的。articles指該使用者的所有文章。

2) 根據使用者以及文章id獲取具體文章

get api/v1/users/:username/articles/:id
:username和:id是層次資料,其中,:username指特定使用者,是唯一的。articles指該使用者的所有文章。:id指文章中的某一特定文章編號,也是唯一的。

響應內容

]}失敗響應

}

3) 根據使用者和主題獲取某使用者某主題分類下的所有文章
get api/v1/users/:username/articles/topics
這裡和上面一條不同之處在於不是要獲得該使用者部落格下的某一特定文章,而是要獲得該使用者部落格下的某一特定主題文章,所以用topics而不用:id。

響應內容

]}失敗響應

}

1) 驗證方式
curl -u "username"
其中的表示部落格**。

2) 登入失敗返回的錯誤資訊

使用無效的憑據進行身份驗證將返回401 unauthorized:

curl -i  -u foo:bar

在短時間內檢測到多個具有無效憑據的請求後,api會臨時拒絕該使用者的所有身份驗證嘗試(包括具有有效憑據的請求)403 forbidden:
curl -i  -u valid_username:valid_password

3) 使用者修改密碼
put  api/v1/users/:username/password/actions/modify
因為「密碼修改」這個介面的命名很難完全使用名詞來構建路徑,所以引入了action命名。

響應內容

]}失敗響應

}

REST設計風格

2000年,roy thomas fielding博士在他的博士 architectural styles and the design of network based software architectures 中提出了幾種軟體應用的架構風格,rest作為其中的一種架構風格在這篇 中進行了概括...

REST設計風格

2000年,roy thomas fielding博士在他的博士 architectural styles and the design of network based software architectures 中提出了幾種軟體應用的架構風格,rest作為其中的一種架構風格在這篇 中進行了概括...

RESTful 風格 API 設計規範

建議將api部署到專用網域名稱下,如 如果不需要考慮擴充套件可以將api當做乙個模組來開發 建議將版本放入url位址中,如 v1.1 get 獲取資源 post 新建資源 delete 刪除資源 put 更新資源api應該提供引數,比如分頁,在pc端和移動端可能是不一樣的 比如pc端一頁 30 條資...