你还不会写API文档吗?

简介: 你还不会写API文档吗?

一:API没人不了解吧


1.API浅谈

什么是API不会有人不知道吧?在步入软件研发之路之后,无论你是前端还是后端,还是测试,不会有人不知道什么是API吧!
三次握手四次挥手,这是什么?这就是API的本质。
当然,我们的日常开发途中,不会有人问你这个问题的,我们一般会说,我需要一个接口,这个接口想要实现什么功能。是的,这个接口就是API。

2.API普通规范

在协同开发中,我们需要有一套规范,才能够让前后端愉快的共同开发。因此,我们需要有一套接口规范,无论是内部严格的使用restful接口规范,还是对接外部某些三方会统一输出POST接口,这些都是团队对内部/外部约定俗成的规范。
此处,我不对以上两种接口输出规范做评价,各有各的规矩,各有各的好处,仁者见仁,智者见智。

3.开发遇到的api文档

基于最近有需求,需要对一个功能模块进行大改版,这个模块之前不是本人负责的,当需求确定之后,我对这个模块的接口进行了梳理(虽然有api管理工具),以便于确定需要对哪些接口进行改造或者新增某些接口。然而,在梳理过程中,我看到了这些问题。。。

二:这些问题怎么还会存在?


对了,先提一句,我们用的是apipost软件进行接口管理。

1.接口入参没有进行注释说明

这里有四五个入参没有进行说明?谁知道是什么参数呢?要不要传?
image.png

2.重复属性的入参字段没有说明作用

比如下列两个字段goods_class 和good_class_group,两个字端明显一致,但是一个是字符串,一个是数组,可能想实现一个商品可以在多个分类下的需求,但是,如果这个字段是优化过的需求,那么,两个字段中必定是有一个是即将废弃的字段,此处,是需要注明TODO的。
而且,在后端的代码逻辑中,也没有找到这两个字段的TODO注释,这就对其他协同开发者形成了威慑,不知道是为什么,但是不敢动。

image.png
image.png

3.后端没有处理的入参

这个现象和第一个现象结合,简直是一个大💣,如下字段inventory,自我理解,这个字段指的是库存,在查询数据库文档之后,没错,就是这个意思,但是,后端并没有处理这个参数。

你以为问题就结束了?

不,问题还有...

这个神奇的字段,在数据库文档中存在,但是在代码model (用的是mongo数据库) 中不存在...

经过查询代码提交记录,找到相关人员,询问为什么?原来是,库存需求被其他方案替换了,不再数据库中存储了,只是,稍稍忘记了修改文档。。。

image.png
image.pngimage.png

4.后端无效的查询字段

熟悉webstorm的伙伴大家都知道这个灰色字体是什么意思吧,上下文中未引用的声明。
那么,这个api中的查询条件order_id就是无效的,很明显,如果前端传入了order_id,则,返回的数据一定是错的,因为,没有进行数据匹配。

image.png

5.接口时间参数处理

在我们日常的开发途中,经常会有这么一种情况,需要查询某个时间段的数据,那么如下所示,有一个问题
23:59:59 < time < 00:00:00,time这一秒,数据没有被查询到。
这是一个很小的问题,但是也很容易被忽视。
其实只需要一个小小的修改,就可以避免这个问题,将$lte改为$lt,然后将$lt的时间修改为第二天的00:00:00即可。

原代码:

        Object.assign(whereStr, {
   
   
          createdAt: {
   
   
            $gte: new Date(moment(payment_time).format('YYYY-MM-DD 00:00:00')),
            $lte: new Date(moment(payment_time).format('YYYY-MM-DD 23:59:59'))
          }
        })

修改后的代码:

        Object.assign(whereStr, {
   
   
          createdAt: {
   
   
            $gte: new Date(moment(payment_time).format('YYYY-MM-DD 00:00:00')),
            $lt: new Date(moment(new Date(payment_time).getTime() + 24 * 60 * 60 * 1000).format('YYYY-MM-DD 00:00:00'))
          }
        })

image.png

三:怎么写好api文档

其实在不同的公司,api文档的输出方式是不同的,由于本人所在公司使用的是apipost软件进行api管理。那么这篇文章中就先来谈谈如何使用apipost进行api文档管理。

1. 动态路由

使用标准的动态路由的写法,利于其他协作者共同开发,以及展示你参数的取值来源。善用路径变量,事半功倍。

image.png

2.学会"锁定"API

apipost有一个锁定api的功能,在锁定之后,其他协作着能修改其中的参数,但是只能在自己本地修改,无法保存,这样就避免其他协作者误操作,将api修改的惨不忍睹。

api左侧还有一个api状态的选项,可以在api开发完毕之后修改为"已完成",约定为前端可调用。

image.png

3.提取字段和描述

这个功能其实就是记录入/出参描述,但是这个描述,会自动获取“参数描述库”中的第一个描述,如果一个字段在不同的接口中代表不同的含义,就需要在提取时,进行检查。

image.png

四:API文档延伸

不同的公司,使用的是不同的API管理工具,每个工具都有其实用的点,善于发现,善于使用。
当然,有更多的和其他公司合作的机会时,一个api接口的word文档,就很有必要了。那么,一个合格的接口word文档是怎么样的?可以查看以下文章!

https://www.yuque.com/morange/morange/pq7pz1

寄语

工欲善其事,必先利其器!

目录
相关文章
|
2月前
|
人工智能 安全 架构师
告别旅行规划的"需求文档地狱"!这个AI提示词库,让你像调API一样定制完美旅程
作为开发者,旅行规划如同“需求地狱”:信息碎片、需求多变、缺乏测试。本文提出一套“企业级”AI提示词库,将模糊需求转化为结构化“API请求”,实现标准化输入输出,让AI成为你的专属旅行架构师,30分钟生成专业定制方案,提升决策质量,降低90%时间成本。
505 129
|
1月前
|
JSON API 数据格式
小红书API接口文档:笔记详情数据开发手册
小红书笔记详情API可获取指定笔记的标题、正文、互动数据及多媒体资源,支持字段筛选与评论加载。通过note_id和access_token发起GET/POST请求,配合签名验证,广泛用于内容分析与营销优化。
阿里云短信服务文档与实际API不符
阿里云短信服务文档与实际API不符
|
8月前
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
Java API 开发者
在Spring Boot中集成Swagger API文档
在Spring Boot中集成Swagger API文档
|
10月前
|
开发框架 数据可视化 .NET
.NET 中管理 Web API 文档的两种方式
.NET 中管理 Web API 文档的两种方式
193 14
|
10月前
|
API 开发者
通义灵码 API 开发文档自动生成场景DEMO
通义灵码API开发文档自动生成场景DEMO展示了通过自定义指令,大模型能快速根据类代码生成Markdown格式的API文档。文档详细描述API的入参、出参,并可生成测试代码等示例,帮助开发者快速创建美观的API文档。
581 1
|
JSON 前端开发 API
后端开发中的API设计与文档编写指南####
本文探讨了后端开发中API设计的重要性,并详细阐述了如何编写高效、可维护的API接口。通过实际案例分析,文章强调了清晰的API设计对于前后端分离项目的关键作用,以及良好的文档习惯如何促进团队协作和提升开发效率。 ####
|
Java API 数据中心
百炼平台Java 集成API上传文档到数据中心并添加索引
本文主要演示阿里云百炼产品,如何通过API实现数据中心文档的上传和索引的添加。
993 4
|
安全 Java API
Nest.js 实战 (三):使用 Swagger 优雅地生成 API 文档
这篇文章介绍了Swagger,它是一组开源工具,围绕OpenAPI规范帮助设计、构建、记录和使用RESTAPI。文章主要讨论了Swagger的主要工具,包括SwaggerEditor、SwaggerUI、SwaggerCodegen等。然后介绍了如何在Nest框架中集成Swagger,展示了安装依赖、定义DTO和控制器等步骤,以及如何使用Swagger装饰器。文章最后总结说,集成Swagger文档可以自动生成和维护API文档,规范API标准化和一致性,但会增加开发者工作量,需要保持注释和装饰器的准确性。
501 0
Nest.js 实战 (三):使用 Swagger 优雅地生成 API 文档