成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

無規矩不成方圓,聊一聊 Spring Boot 中 RESTful 接口設計規范

開發 前端
在明確接口職責的條件下,盡量做到接口單一,即一個接口只做一件事,而非兩件以上。很多非資深接口設計者,在設計接口時,總認為接口所做的事越多,越牛叉,這是非常嚴重的錯誤認識。

在設計接口時,有很多因素要考慮,如接口的業務定位,接口的安全性,接口的可擴展性、接口的穩定性、接口的跨域性、接口的協議規則、接口的路徑規則、接口單一原則、接口過濾和接口組合等諸多因素,本篇文章將簡要分析這些因素。

一 規范性建議

1.職責原則

在設計接口時,必須明確接口的職責,即接口類型,接口應解決什么業務問題等。

2.單一性原則

在明確接口職責的條件下,盡量做到接口單一,即一個接口只做一件事,而非兩件以上。很多非資深接口設計者,在設計接口時,總認為接口所做的事越多,越牛叉,這是非常嚴重的錯誤認識。

3.協議規范

在設計接口時,應明確接口協議,是采用HTTP協議,HTTPS協議還是FTP協議,要根據具體情況來定。

FTP協議(File Transfer Protocol,簡稱FTP),是一套標準的文件傳輸協議,用于傳輸文件,如.txt,.csv等,一般文件傳輸,采用FTP協議。

HTTP協議,適用一般對安全性要求比較低或沒要求的業務情景。

HTTPS=HTTP+SSL,適用于對安全性要求較高的業務情景。

4.路徑規則

由于api獲取的是一種資源,所以網址中盡量為名詞,而非動詞。

/api/v1.0/pruduct/2019
/api/v1.0/users/2019

5.http請求方式

接口基本訪問協議:get(獲取),post(新增),put(修改)和delete(刪除)。

  • get /users:列出所有用戶
  • get /users/id:根據id獲取用戶
  • post /user:新增用戶
  • put /user/id:根據用戶id更新用戶
  • delete /user/id:根據用戶id刪除用戶

6.域名

一般地,域名分為主域名和專有域名,主域名適合api長期不變或變化較少的業務,專有域名是解決具體的專有業務的。

以百度舉例:

(1)主域名:www.baidu.com

(2)產品服務類

  • 百度文庫:https://wenku.baidu.com/
  • 百度知道:https://zhidao.baidu.com/
  • 百度資訊:https://zhidao.baidu.com/

(3)市場活動類

  • 百度公益:http://gongyi.baidu.com
  • 百度logo:http://logo.baidu.com/
  • 百度世界:https://baiduworld.baidu.com

7.跨域考慮

在明確域名的情況下,一定要考慮接口是否跨域,以及跨域應采用的技術手段等。

8.api版本

對于接口的url,應加版本號http://api.demo.com/vowocgsc/,如 ,其中d表示版本號,如v1.0,v2.0。

例子:獲取產品號為2019,版本號為v1.0的版本號的產品信息。

/api/v1.0/Pruducts/2019

9.適度過濾信息

當記錄數比較多時(如 SELECT * FROM TBName),因適當添加一些條件對數據進行過濾,如TOP,分頁,分組,排序和WHERE條件等。

下面是一些常見的參數。

  • limit=100:返回100條數據
  • offset=101:從第101條數據開始返回
  • page=10:指第10頁
  • per_page=100:每頁100條數據
  • sortby=name:排序字段
  • order=desc:降序
  • group=groupName:分組
  • producy_type=1:篩選條件

10.返回數據格式

返回數據格式,一般包括三個字段:

(1)失敗情況(狀態碼、錯誤碼和錯誤描述)。

{

“status”:0,//狀態碼 0-表示失敗,1-表示成功

“error_code”:”2003”,//錯誤碼,一般在設計時定義

“error_des”:”身份驗證失敗”//錯誤描述,一般在設計時定義

}

(2)成功情況(標識id,數據對象,狀態碼)。


”sid“:”sh20190111”,//token id

”users“:{

”id“:”al201901111341”,//用戶id

“name”:”Alan_beijing”,//用戶名

“addr”:”用戶地址”

},

“status”:1//狀態碼 0-表示失敗,1-表示成功

}

11.安全性原則

接口暴露的考慮,接口并發量的考慮,接口防攻擊的考慮,接口跨域的考慮等。

12.可擴展性原則

在設計接口時,充分考慮接口的可擴展性。

13.定義api界限

任何api,從權限上,可歸結為匿名api和非匿名api,前者不需要驗證,后者需要驗證

14.定義api返回碼。

在api設計時,要定好api返回碼,如:

  • 1 --授權過期
  • 404--未找到資源
  • 500--內部服務器錯誤
  • 600--賬號被鎖

二 反規范性建議

存在這樣一種業務場景:某個接口需要返回多個api接口組合的結果 ,在類似的業務場景下,所設計的接口,具有一定的反規范性。

1.Request

data:[
{url:'api1',type:'get',data:{...}},
{url:'api2',type:'get',data:{...}},
]

2.Responce

{
status:0,
msg:'',
data:[
{status:1,msg:'',data:[]},
{status:1,msg:'',data:{}}
]
}

三 實例

假設存在這樣一個一個業務:一個ERP系統,需要提供兩個接口,一個是用戶訪問接口(需要驗證),另一個是用戶注冊接口(不需要驗證)。

根據本篇文章一,二部分的建議,我們來設計滿足該業務需求的接口。

(一)定義統一參數

1.定義統一輸入參數

圖片

2.定義統一輸出參數

圖片

3.定義統一錯誤碼

圖片

(二)定義接口授權類別

如下為定義接口授權類別

圖片

(三)用戶接口

1.用戶注冊

圖片

2.Request

圖片

3.Responce

圖片

4.code示例?

Request:
{
"mobile":13636595499,
"verify_code":"987654",
"pwd":"123456"
}

Responce:
(1)error
{
"status":0,
"error_code":1001
"error_desc":"手機驗證碼已失效"
}
(2)succed
{
"sid":"sh201901141529",
"uid":1,
"status":1
}

(四)用戶登錄

1.登錄接口概述

圖片

2.Request

圖片

3.Responce

圖片

4.Code

Responce:
1.error
{
"status":0,
"error_code":1002,
"error_desc":"密碼錯誤"
}
2.succeed
{
"sid":"sh201901141529",
"user":{
"id":1,
"username":"",
age:0,
gender:0
},
"status":1
}

作者:Alan_beijing

www.cnblogs.com/wangjiming

責任編輯:武曉燕 來源: 江南一點雨
相關推薦

2009-08-12 21:44:26

2013-02-21 09:55:13

云標準云計算

2010-09-13 13:06:42

2010-12-08 13:40:05

百卓網絡Web認證Smart

2011-01-18 13:41:40

運維法則

2025-06-03 04:00:00

Spring框架配置

2021-08-09 06:57:41

CodeReview流程

2024-10-16 15:11:58

消息隊列系統設計

2021-01-04 08:09:07

Linux內核Watchdog

2010-08-10 09:51:19

C#代碼

2023-12-28 09:59:37

Spring容器XML

2021-08-12 10:06:31

數據合規數據安全網絡安全

2020-12-11 11:11:44

原子類JavaCAS

2019-12-02 16:23:03

Python編程語言“垃圾”回收

2022-08-30 07:39:57

C++namespace隔離

2023-09-22 17:36:37

2020-05-22 08:16:07

PONGPONXG-PON

2021-01-28 22:31:33

分組密碼算法

2018-06-07 13:17:12

契約測試單元測試API測試

2024-09-09 08:29:25

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本免费在线 | 免费能直接在线观看黄的视频 | 精品久久久久久久久久久久 | 色www精品视频在线观看 | 中文字幕乱码亚洲精品一区 | 国产精品国产自产拍高清 | 国产精品色 | 伊人免费在线观看 | 免费观看a级毛片在线播放 黄网站免费入口 | 亚洲欧美一区二区三区1000 | 国产成人免费 | 欧美日韩在线观看一区 | 日韩视频在线播放 | 精品久久久久久久久久久久久久久久久 | 人成在线 | 亚洲免费视频在线观看 | 久久一区二区三区电影 | 国产免费黄网 | www.欧美.com | 国产第一页在线观看 | 自拍 亚洲 欧美 老师 丝袜 | 成人精品视频99在线观看免费 | 国产精品免费在线 | 另类在线 | 久久成人国产精品 | 成人午夜免费福利视频 | 国产精品一区在线 | 91免费看片 | 91精品国产综合久久久久蜜臀 | 亚洲a级 | 中文字幕日韩欧美一区二区三区 | 日日夜夜精品视频 | wwwxxx日本在线观看 | 日韩综合 | 在线亚洲人成电影网站色www | 欧美一级久久久猛烈a大片 日韩av免费在线观看 | 99r在线| 国产精品日韩欧美一区二区 | 中文字幕在线观看视频网站 | 日本欧美在线视频 | 成人av在线网站 |