Nous faisons du développement back-end, et nous avons souvent besoin de définir des documents d'interface.
Récemment, alors que je faisais une examen du document d'interface, j'ai découvert que le paramètre de sortie défini par un petit partenaire est une valeur d'énumération, mais le document d'interface ne donnait pas la valeur d'énumération spécifique correspondante. En fait, il est très important de bien rédiger les documents d’interface. Aujourd'hui, frère Tianluo vous propose 12
points à noter dans les documents de conception d'interface~12
个注意点~
换句话说,你的接口是做什么的,是否易懂清晰?一般接口url
也要求能看得出接口的作用。比如说,查询用户信息(queryUserInfo),就是一个不错的接口名称。
接口的地址,也叫接口的URL
地址。即别人调用你的接口,用的是什么URL
。比如/api/user/queryUserInfo
就是一个接口地址。但是,我想说的是,这还不是一个完整的接口地址。你的接口是不是HTTP
调用呢?
如果是HTTP
调用的话,域名是什么呢?端口呢。一个好的http
接口地址,应当是这样的:
https//tianluo.com:15000/api/user/queryUserInfo
接口请求方式通常有以下几种:
URL
中传递参数,通常用于查询数据。GET
请求,但是只返回响应头,不返回实体内容,通常用于获取资源的元信息。你定义接口文档的时候,需要写清楚,你的接口请求方式是哪一个?一般情况下,我们用POST和GET
比较多。也有些公司的所有接口都用POST
请求。
我们定义接口的时候,请求参数是最主要的部分之一。一份合格的接口文档,请求参数应当包含这八大要素:
userId
。String、Integer
等。Long,Integer
等数值类型的话,这个就是一个范围值,比如1~10
,如果是枚举值的话,那就是枚举范围,比如ACTIVE、INACTIVE
。yyyyMMdd
github Adresse, merci pour chaque étoile : github
url
nécessite également que la fonction de l'interface puisse être vue. Par exemple, 🎜interroger les informations utilisateur (queryUserInfo)🎜 est un 🎜bon nom d'interface🎜. 🎜🎜🎜URL
de l'interface. Autrement dit, quelle URL
est utilisée lorsque d'autres appellent votre interface. Par exemple, /api/user/queryUserInfo
est une 🎜adresse d'interface🎜. Cependant, ce que je veux dire, c'est qu'il ne s'agit pas d'une adresse d'interface complète. Votre interface est-elle appelée par HTTP
? 🎜🎜S'il est appelé par HTTP
, quel est le 🎜nom de domaine🎜 ? 🎜Port🎜. Une bonne adresse d'interface http
devrait ressembler à ceci : 🎜🎜https//tianluo.com:15000/api/user/queryUserInfo
🎜
🎜🎜URL code > Passer les paramètres, généralement utilisés pour interroger des données. 🎜🎜POST : Soumettez des données au serveur, généralement utilisées pour des opérations telles que l'ajout, la modification, la suppression, etc. 🎜🎜PUT : Mettre à jour les ressources sur le serveur, généralement utilisé pour mettre à jour les données. 🎜🎜DELETE : Supprimer des ressources du serveur, généralement utilisé pour supprimer des données. 🎜🎜PATCH : met à jour partiellement les ressources sur le serveur, généralement utilisé pour modifier certaines données. 🎜🎜HEAD : similaire à la requête <code>GET
, mais renvoie uniquement l'en-tête de réponse et non le contenu de l'entité. Elle est généralement utilisée pour obtenir des méta-informations sur les ressources. 🎜🎜OPTIONS : demandez au serveur de renvoyer les méthodes de requête prises en charge et d'autres informations, généralement utilisées par le client et le serveur pour négocier la méthode de requête. 🎜🎜🎜Lorsque vous définissez le document d'interface, vous devez écrire clairement, quelle est votre méthode de demande d'interface ? Dans des circonstances normales, nous utilisons POST et GET
plus souvent. Certaines entreprises utilisent également des requêtes POST
pour toutes les interfaces. 🎜🎜🎜userId
. 🎜🎜Type : Le type de paramètre, tel que String, Integer
, etc. 🎜🎜Est-ce obligatoire : le paramètre de requête est-il obligatoire ? Si nécessaire, lorsque l'amont ne transmet pas ce paramètre, une exception de vérification du paramètre doit être levée. 🎜🎜Valeur par défaut : Si ce paramètre n'est pas passé, existe-t-il une valeur par défaut et quelle est la valeur par défaut. 🎜🎜Plage de valeurs : s'il s'agit d'un type numérique tel que Long, Integer
, il s'agit d'une valeur de plage, telle que 1~10
, s'il s'agit d'une valeur d'énumération, c'est-à-dire une plage d'énumération, telle que ACTIVE, INACTIVE
. 🎜🎜Format du paramètre : par exemple, si votre paramètre est une date, vous devez spécifier le format du paramètre, tel que aaaaMMjj
🎜🎜Exemple de valeur du paramètre d'entrée : fournissez un exemple de valeur du paramètre de réponse afin que les développeurs peuvent mieux comprendre et utiliser ce paramètre. 🎜🎜Remarque : S'il existe des 🎜instructions spéciales🎜 pour ce champ de paramètre d'entrée, vous pouvez l'expliquer dans cette colonne. S’il n’y a pas d’explication particulière, il suffit de décrire la fonction de ce paramètre. 🎜🎜🎜🎜Ce qui suit est un exemple de document pour la saisie des paramètres🎜 :🎜Nom du paramètre | Type | Est-il obligatoire ? | Valeur par défaut | Plage de valeurs | Format du paramètre | Exemple de valeur du paramètre d'entrée | Remarques (description) |
---|---|---|---|---|---|---|---|
IDutilisateur | Long | is | 0L | 0~99999999L | Aucun | 666L | UserId |
birthDay | String | is | 19900101 | 19900101~20231231 | aaaaMMjj | 19940107 | Anniversaire de l'utilisateur |
Les paramètres de réponse sont en fait similaires aux paramètres d'entrée, avec 7 éléments :
String, Integer
, etc. String、Integer
等。yyyy-MM-dd、HH:mm:ss
等。不一样的地方是,响应参数,一般都是按照code,msg,data
aaaa-MM-jj, HH:mm:ss
, etc. Description du paramètre : Description détaillée de la signification de ce paramètre de réponse. Plage de valeurs : décrit la plage de valeurs du paramètre de réponse, telle que plage d'entiers, longueur de chaîne
, etc.Exemple de valeur : fournissez un exemple de valeur pour ce paramètre de réponse afin que les développeurs puissent mieux comprendre et utiliser ce paramètre. | La différence est que les paramètres de réponse sont généralement renvoyés au format code, msg, data : | 6 Code d'erreur de l'interface |
---|---|---|
Code d'erreur | Message d'erreur | |
1001 | ||
Paramètres de demande illégaux | 1002 |
定义接口文档时,对于一些需要保护的接口,也需要考虑接口的安全,例如权限管理、防止 SQL 注入等。
因此,接口文档应当包含接口的安全性说明:例如接口的访问授权方式、数据传输加密方式等。此外,接口文档还应该对于敏感数据和操作进行标注,方便使用者注意隐私和安全问题。
在接口文档定义时,接口版本管理是非常重要的一个方面。由于软件项目的迭代和升级,接口可能会随着版本的变化而发生变化。为了避免接口变化给用户带来不必要的困扰,需要对接口进行版本管理。
以下是一些常用的接口版本管理方法:
https://example.com/api/v1/user
,表示该接口的版本号为v1
。Semantic Versioning
)规范,即版本号格式为X.Y.Z
,其中X
表示主版本号、Y
表示次版本号、Z
表示修订号。当进行兼容性变更时,需升级主版本号;当增加功能且不影响现有功能时,需升级次版本号;当进行bug
修复或小功能改进时,需升级修订号。无论采用何种方法,接口版本管理都应该得到充分的考虑。在接口版本变化时,需要及时更新接口文档(详细描述版本的变化、兼容性问题、版本切换方式等),以确保用户能够获得最新的接口信息。
如果接口发生了变更,比如参数有哪些变更,错误码变更等等,都需要维护到文档上。同时需要登记变更的记录。
日期 | 变更描述 | 操作人 |
---|---|---|
2023-04-16 | 创建接口文档,定义了第一版接口文档 | 捡田螺的小男孩 |
2023-04-18 | 修改接口文档,增加了错误码,出参等 | 田螺哥 |
接口文档,是需要写清楚的请求头的。接口文档的请求头可以看到以下的信息:
application/json、application/x-www-form-urlencoded、multipart/form-data
等。Token、Bearer
等。application/json、text/html
等。gzip、deflate
等。no-cache、max-age
等。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"}
接口文档,需要提供接口的使用案例:以方便开发者理解接口的使用方法和调用流程。
一般来说,接口文档需要完善:接口测试的方法和测试结果,以便用户可以测试接口是否符合自己的需求,让用户用得放心~哈哈
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!