目前比較成熟的一套網際網路應用程式的api設計理論
應該盡量將api部署在專用網域名稱之下
/v2/user/1000001?apikey=***
應該將api的版本號放入url
/v2
/user/1000001?apikey=***
在restful架構中,每個**代表一種資源(resource),所以**中不能有動詞,只能有名詞
,而且所用的名詞往往與資料庫的**名對應
。一般來說,資料庫中的表都是同種記錄的」集合」(collection),所以api中的名詞也應該使用複數。
/v2/book
/:id (獲取圖書資訊)
/v2/movie
/subject/:id (電影條目資訊)
/v2/music
/:id (獲取**資訊)
/v2/event
/:id (獲取同城活動)
對於資源的具體操作型別,由http動詞表示。常用的http動詞有下面四個(對應增/刪/改/查
)。
get(select
):從伺服器取出資源(一項或多項)。
eg. 獲取圖書資訊get
/v2/book/:id\
post(create
):在伺服器新建乙個資源。
eg. 使用者收藏某本圖書post
/v2/book/:id/collection
put(update
):在伺服器更新資源(客戶端提供改變後的完整資源)。
eg. 使用者修改對某本圖書的收藏put
/v2/book/:id/collection
delete(delete
):從伺服器刪除資源。
eg. 使用者刪除某篇筆記delete
/v2/book/annotation/:id
如果記錄數量很多,伺服器不可能都將它們返回給使用者。api應該提供引數,過濾返回結果
?limit=10:指定返回記錄的數量*
eg. 獲取圖書資訊get
/v2/book/:id?limit=10
伺服器向使用者返回的狀態碼和提示資訊
每個狀態碼代表不同意思, 就像代號一樣
2系 代表正常返回
4系 代表資料異常
5系 代表伺服器異常
錯誤碼錯誤資訊
含義狀態碼
6000
book_not_found
圖書不存在
4046002
unauthorized_error
沒有修改許可權
4036004
review_content_short(should more than 150)
書評內容過短(需多於150字)
4006006
review_not_found
書評不存在
4046007
not_book_request
不是豆瓣讀書相關請求
4036008
people_not_found
使用者不存在
4046009
function_error
伺服器呼叫異常
4006010
comment_too_long(should less than 350)
短評字數過長(需少於350字)
4006011
collection_exist(try put if you want to update)
該圖書已被收藏(如需更新請用put方法而不是post)
4096012
invalid_page_number(should be digit less than 1000000)
非法頁碼(頁碼需要是小於1000000的數字)
4006013
chapter_too_long(should less than 100)
章節名過長(需小於100字)
400
200(正常)
表示一切正常,返回的是正常請求結果。
302/307(臨時重定向)
指出被請求的文件已被臨時移動到別處,此文件的新的url在location響應頭中給出。
304(未修改)
表示客戶機快取的版本是的,客戶機應該繼續使用它。
403(禁止)
伺服器理解客戶端請求,但拒絕處理它。通常由於伺服器上檔案或目錄的許可權設定所致。
404(找不到)
伺服器上不存在客戶機所請求的資源。
500(內部伺服器錯誤)
伺服器端的cgi、asp、jsp等程式發生錯誤。
api的身份認證應該使用oauth 2.0框架。
技術團隊自己約定的規則
- 增加兩個引數time
,token
-time
為時間戳, 用於判斷介面請求是否超時
-token
為時間戳加密後的字串, 加密規則只有你們技術團隊自己知道
如果你覺得不錯的話,不妨打賞一下,這樣我就有更大的動力去完善它,優化它。程式設計正規化 以炒菜為例,講解各種程式設計正規化
過程式程式設計 生活的經驗告訴我們以下的物理現實,事情是按照時間的順序乙個步驟接乙個步驟的發展。程式設計裡有乙個正規化就模擬了這樣的經驗,就是過程式程式設計。如果現在有一些剛從超市買回來的菜,要吃進肚子,按照過程式程式設計,可以如下表示 洗 菜 切 菜 炒 菜 吃 菜 以上的 中,括號外為動詞,括號...
以炒公尺粉為例,講解瀑布和敏捷的區別
很多專案推行敏捷開發很長一段時間,仍然弄不清楚瀑布和敏捷到底有什麼區別,這裡以炒公尺粉為例,講解兩者的區別。瀑布 就是自己在家裡炒公尺粉 家裡炒公尺粉,一般是按照以下流程 先準備好足量的公尺粉 胡蘿蔔 蔥 白菜 然後切胡蘿蔔絲 白菜絲 蔥,同時用開水泡公尺粉 接著下油鍋,胡蘿蔔絲 白菜絲等一起翻炒,...
jBPM持久化(以MySQL為例)
1 在mysql裡新建一資料庫,名為jbpm create database jbpm 名字可以任意,後面要用到。3 將mysql的jdbc驅動mysql connector.jar拷貝到jbpm資料夾的lib mysql下,沒有mysql資料夾則新建乙個。4 在jbpm資料夾的src resour...