Press "Enter" to skip to content

使用AI工具为微服务开发提升生产力

构建API及其相关组件通常是一项繁琐的任务,尤其是在处理复杂的数据模型和架构(如微服务)时。重复编码、设置配置以及构建单元测试的开销很快就会变得耗时。以下是AI工具(如ChatGPT)如何改变游戏规则。

利用AI工具(Chat GPT)进行API开发

为了了解ChatGPT的能力,让我们深入了解一个实际例子。我们的任务是开发一个REST API来管理用户的个人身份信息(PII)。该过程包括:

  1. 数据库对象创建(存储过程)
  2. 仓储(数据库交互和数据访问对象的接口)
  3. 服务(业务逻辑层)
  4. REST控制器(暴露端点)

数据库对象

为了构建存储过程,首先向ChatGPT提供表结构。然后,提供一个示例存储过程。这将使ChatGPT能够锚定到存储过程模式,并为指定的表构建一个新的过程。以下是我们提供的表:

这是生成的存储过程:

这是对话链接。

仓储(数据库交互和数据访问对象的接口)

在构建仓储层的过程中,我们使用了一个专用的ChatGPT线程。我们向其提供了先前提到的存储过程和表定义。利用ChatGPT的功能,我们成功生成了:

  1. JPA实体。
  2. 包含接口及其实现的全面的仓储类。

生成后,我们让ChatGPT负责创建单元测试用例。令人印象深刻的是,结果几乎完美。只需要进行一些小的调整,主要涉及命名空间和其他一些细节。

以下是生成的类和代码:

仓储接口和实现

单元测试

在初始执行过程中,我们在仓储实现生成的代码中遇到了一些问题。我们数据库中存储的数据是加密的,需要解密持久化的值。我们调整了仓储层的代码以解决这个问题,集成了解密机制。

在实施修改后,我们向ChatGPT提供了更新后的仓储代码,并寻求相应的单元测试用例。令人惊讶的是,ChatGPT为我们提供了一个完美功能的单元测试用例。

对于那些对详细对话感兴趣的人,这是我们ChatGPT对话线程的链接。

构建业务服务层

为了深入探索,我们将需求扩展到现有的ChatGPT服务示例,指定像JPA实体和仓储接口这样的依赖项。

这个AI工具迅速生成了类。服务接口清晰地规定了根据用户和贷款ID获取用户PII数据的契约。它的实现UserPIIDataServiceImpl利用了JPA仓储来获取所需的数据,如果为空,则返回一个空列表 – 这是为了避免潜在的空指针异常的巧妙处理。

单元测试UserPIIDataServiceImplTest非常全面。使用Mockito进行模拟对象,测试通过安排模拟数据、调用服务并断言预期结果来验证服务的功能。

以下是生成的类和代码:

服务接口和实现

单元测试

这是构建服务层的聊天线程。

最后一步:生成REST控制器

在设置好基础层后,我们开始构建REST控制器。为此,我们利用了先前存在的REST控制器示例作为基本模板。我们向ChatGPT提供了这个示例,以及服务接口和必要的实体对象。

作为回应,ChatGPT生成了一个根据我们的要求定制的RestController。以下是生成的类和代码:

自动生成代码的一个突出特点是包含了注解,特别是ApiResponseApiOperation。如果没有ChatGPT的干预,可能会无意中忽略这些重要的注解,这可能会影响API的清晰度和文档质量。

在生成REST控制器之后,我们寻求ChatGPT的帮助来生成单元测试用例。最初,生成的测试被设计成仿佛在调用实际的API。然而,我们的意图是严格测试控制器的代码。在提供了必要的指示以缩小焦点后,ChatGPT有效地提供了定制的单元测试代码。以下是生成的单元测试的快照:

最后,为了确保一切都按预期运行,我们使用Postman对API端点进行了验证。令人高兴的是,API的行为与预期完全一致,展示了自动生成代码的实际适用性和精确性。这是聊天记录。

上述示例可能看起来很简单,但我们也将这种方法应用于构建API端点以插入数据并观察一致的模式。当处理包含30列的大型表时,真正的优势就显现出来了。手动定义存储过程参数并构建具有大量属性的实体,每个属性都需要准确的列映射,这可能是一个繁琐且容易出错的过程。然而,利用类似ChatGPT或其他人工智能工具的工具可以消除这些重复性任务。结果,开发人员可以以更高效、更有文档的方式生成代码,减少工作量。

结论

技术领域正在迅速发展。随着像ChatGPT这样的人工智能工具的出现,开发人员现在在他们的编码工作中拥有了强大的盟友。通过自动化API开发中更繁琐和重复的任务,这些工具不仅简化了流程,而且极大地提高了代码质量和准确性。本文分享的经验证明了人工智能在改变软件开发方式方面的潜力不仅仅是猜测,而是我们开始接受的现实。随着我们不断前进,人与机器之间的这种合作无疑将重新定义软件工程领域的格局,为新的可能性和以前认为无法达到的效率水平打开大门。

Leave a Reply

Your email address will not be published. Required fields are marked *