目錄
前言
1. 你的介面名稱是否清晰?
2. 你的介面位址是否完整
#3.你的介面請求方式是否正確
7.接口安全
8. 接口版本管理
9. 维护接口文档更新迭代
10.明确请求头有哪些
11 接口请求示例
12. 接口测试
首頁 後端開發 php教程 分享介面設計文件的12個注意點

分享介面設計文件的12個注意點

Apr 24, 2023 am 10:58 AM
php 後端

前言

我們做後端開發的,常常需要定義介面文件

最近在做介面文件評審的時候,發現一個小夥伴定義的出參是個列舉值,但是介面文件沒有給對應具體的枚舉值。其實,如何寫好介面文檔,真的很重要。今天田螺哥,為你帶來介面設計文件的12個注意點~

分享介面設計文件的12個注意點

  • 大眾號撿田螺的小男孩 (有田螺精心原創的面試PDF)
  • github地址,感謝每顆star:github

1. 你的介面名稱是否清晰?

換句話說,你的介面是做什麼的,是否易懂清晰?一般介面url也要求能看得出介面的作用。比如說,查詢使用者資訊(queryUserInfo),就是一個不錯的介面名稱

分享介面設計文件的12個注意點

2. 你的介面位址是否完整

介面的位址,也叫介面的URL位址。即別人呼叫你的接口,用的是什麼URL。例如/api/user/queryUserInfo就是一個介面位址。但是,我想說的是,這還不是一個完整的介面位址。你的介面是不是HTTP呼叫呢?

如果是HTTP呼叫的話,網域是什麼呢? 呢。一個好的http介面位址,應該是這樣的:

https//tianluo.com:15000/api/user/queryUserInfo

分享介面設計文件的12個注意點

#3.你的介面請求方式是否正確

介面請求方式通常有以下幾種:

    ##GET:從伺服器取得資源,可以在
  • URL中傳遞參數,通常用於查詢資料。
  • POST:向伺服器提交數據,通常用於新增、修改、刪除等操作。
  • PUT:向伺服器更新資源,通常用於更新資料。
  • DELETE:從伺服器刪除資源,通常用於刪除資料。
  • PATCH:局部更新伺服器到伺服器資源,通常用於修改部分資料。
  • HEAD:類似
  • GET請求,但只回傳回應頭,不回傳實體內容,通常用來取得資源的元資訊。
  • OPTIONS:請求伺服器傳回支援的請求方式等訊息,通常用於客戶端與服務端協商請求方式。
你定義介面文件的時候,需要寫清楚,你的介面請求方式是哪一個?一般情況下,我們用

POST和GET比較多。也有些公司的所有介面都用POST請求。

分享介面設計文件的12個注意點

4.請求參數的8大要素

我們定義介面的時候,請求參數是

最主要的部分之一 。一份合格的介面文件,請求參數應包含這八大要素:

    參數名稱: 參數的名字,都是駝峰命名,例如
  • userId
  • 類型: 參數的型別,例如
  • String、Integer等。
  • 是否必填: 請求參數是不是必填的,如果要求必填的,當上游不傳這個參數的時候,應當拋參數校驗異常。
  • 預設值: 如果這個參數不傳,是否有預設值,預設值是多少。
  • 取值範圍: 如果是
  • Long,Integer等數值類型的話,這個就是一個範圍值,例如1~10,如果是枚舉值的話,那就是枚舉範圍,例如ACTIVE、INACTIVE
  • 參數格式:例如你的參數是個日期的話,就需要說明參數格式,如
  • yyyyMMdd
  • #入參範例值: 提供該回應參數的範例值,以便開發人員更好地理解和使用該參數。
  • 備註: 如果這個入參字段有
  • 特殊說明的話,可以在這一欄說明。如果沒有特別說明,那隻描述這個參數作用也可以。

以下就是入參的文件範例

##666L用戶IdbirthDayString是#1990010119900101~20231231yyyyMMdd
參數名稱 類型 是否必填 #預設值 取值範圍 參數格式 入參範例值 備註(說明)
userId Long 0L 0~99999999L

分享介面設計文件的12個注意點

#19940107用戶生日#5.回應參數的7大要求
###回應參數其實跟入參差不多,有7種要素:#########參數名稱:描述該回應參數的名稱。 ######參數類型:描述此回應參數的資料類型,如###String、Integer###等。 ######參數格式:描述此回應參數的資料格式,如###yyyy-MM-dd、HH:mm:ss###等。 ######參數說明:對此回應參數的意義進行詳細的描述。 ######取值範圍:描述此回應參數的取值範圍,如###整數範圍、字串長度###等。 ######是否為必填:描述該回應參數是否為必填項。 ######範例值:提供此回應參數的範例值,以便開發人員更能理解並使用該參數。 #########不一樣的地方是,回應參數,一般都是依照###code,msg,data###的格式回傳的:###
{
    "code": 0,
    "message": "success",
    "data": {
        "name": "Tom",
        "age": 20,
        "gender": "男"
    }
}
登入後複製
###6. 介面錯誤碼######一份好的介面文檔,一定少不了錯誤碼列舉。一般錯誤碼定義包含三列:###錯誤碼、錯誤碼資訊、意義###################錯誤碼#####錯誤訊息### ###意義##################1001#######參數錯誤#######請求參數不合法######### ###1002######用戶不存在######根據給定的用戶ID沒有找到對應的用戶資訊############1003#######資料庫錯誤######資料庫存取出錯#############

分享介面設計文件的12個注意點

7.接口安全

定义接口文档时,对于一些需要保护的接口,也需要考虑接口的安全,例如权限管理、防止 SQL 注入等。

因此,接口文档应当包含接口的安全性说明:例如接口的访问授权方式、数据传输加密方式等。此外,接口文档还应该对于敏感数据和操作进行标注,方便使用者注意隐私和安全问题

分享介面設計文件的12個注意點

8. 接口版本管理

在接口文档定义时,接口版本管理是非常重要的一个方面。由于软件项目的迭代和升级,接口可能会随着版本的变化而发生变化。为了避免接口变化给用户带来不必要的困扰,需要对接口进行版本管理。

以下是一些常用的接口版本管理方法:

  • 在接口文档中明确版本号:在接口文档中明确标识接口的版本号,例如在接口地址中添加版本号信息,如https://example.com/api/v1/user,表示该接口的版本号为v1
  • 使用语义化版本号:采用语义化版本号(Semantic Versioning)规范,即版本号格式为X.Y.Z,其中X表示主版本号、Y表示次版本号、Z表示修订号。当进行兼容性变更时,需升级主版本号;当增加功能且不影响现有功能时,需升级次版本号;当进行bug修复或小功能改进时,需升级修订号。
  • 增量发布:在接口发生变化时,先发布新版本的接口,同时保留旧版本的接口。用户可以根据自己的需求来选择使用哪个版本的接口。随着新版本的接口逐步替换旧版本的接口,最终可以将旧版本的接口废弃。

无论采用何种方法,接口版本管理都应该得到充分的考虑。在接口版本变化时,需要及时更新接口文档(详细描述版本的变化、兼容性问题、版本切换方式等),以确保用户能够获得最新的接口信息。

9. 维护接口文档更新迭代

如果接口发生了变更,比如参数有哪些变更,错误码变更等等,都需要维护到文档上。同时需要登记变更的记录

日期变更描述操作人
2023-04-16创建接口文档,定义了第一版接口文档捡田螺的小男孩
2023-04-18修改接口文档,增加了错误码,出参等田螺哥

分享介面設計文件的12個注意點

10.明确请求头有哪些

接口文档,是需要写清楚的请求头的。接口文档的请求头可以看到以下的信息:

  • Content-Type:指定请求体的数据格式,如application/json、application/x-www-form-urlencoded、multipart/form-data等。
  • Authorization:用于身份验证的令牌信息,如Token、Bearer等。
  • Accept:指定客户端可以接受的响应数据格式,如application/json、text/html等。
  • User-Agent:指定客户端的类型和版本信息,可以用于服务端进行针对性优化。
  • Accept-Encoding:指定客户端可以接受的数据压缩格式,如gzip、deflate等。
  • Cache-Control:指定客户端缓存的策略,如no-cache、max-age等。
  • Cookie:包含客户端发送给服务器的cookie信息。

这是是一个接口文档的请求头的示例:

POST /api/user HTTP/1.1
Host: example.com
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Accept: application/json
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36
Accept-Encoding: gzip, deflate, br
Cache-Control: no-cache
Cookie: _ga=GA1.2.1234567890.1234567890; _gid=GA1.2.0987654321.0987654321
If-None-Match: W/"2a-3TjT7VaqgkT1nJdKjX9Cpijp2FA"
Referer: https://example.com/login
Origin: https://example.com
Content-Length: 43

{"name": "John Doe", "age": 25, "email": "john.doe@example.com"}
登入後複製

11 接口请求示例

接口文档,需要提供接口的使用案例:以方便开发者理解接口的使用方法和调用流程

12. 接口测试

一般来说,接口文档需要完善:接口测试的方法和测试结果,以便用户可以测试接口是否符合自己的需求,让用户用得放心~哈哈

以上是分享介面設計文件的12個注意點的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

CakePHP 日期和時間 CakePHP 日期和時間 Sep 10, 2024 pm 05:27 PM

為了在 cakephp4 中處理日期和時間,我們將使用可用的 FrozenTime 類別。

討論 CakePHP 討論 CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP 是 PHP 的開源框架。它旨在使應用程式的開發、部署和維護變得更加容易。 CakePHP 基於類似 MVC 的架構,功能強大且易於掌握。模型、視圖和控制器 gu

CakePHP 檔案上傳 CakePHP 檔案上傳 Sep 10, 2024 pm 05:27 PM

為了進行文件上傳,我們將使用表單助理。這是文件上傳的範例。

CakePHP 建立驗證器 CakePHP 建立驗證器 Sep 10, 2024 pm 05:26 PM

可以透過在控制器中新增以下兩行來建立驗證器。

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

CakePHP 快速指南 CakePHP 快速指南 Sep 10, 2024 pm 05:27 PM

CakePHP 是一個開源MVC 框架。它使應用程式的開發、部署和維護變得更加容易。 CakePHP 有許多函式庫可以減少大多數常見任務的過載。

您如何在PHP中解析和處理HTML/XML? 您如何在PHP中解析和處理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

See all articles