从零实现一套低代码(保姆级教程)【后端服务】 --- 【2】实现页面的增删改查接口

摘要

本篇是这个系列的第二篇文章,相关参考:

# 从零实现一套代码前端部分专栏

# 从零实现一套低代码(保姆级教程)【后端服务】 --- 【1】初始化后端项目

在上一篇中,我们已经搭建好了后端服务。同时实现了获取全部页面列表的接口以及Swagger文档的配置。

如果这一步没有问题了,我们现在就可以去完成剩下和页面相关的接口了。我们先总体的看一下,我们要实现什么接口。

1.实现新建页面的接口

这一步,也就是增删改查里面的增。

对于新增页面,我们可以在低代码平台中,是通过创建页面来触发的,那我创建一个页面应只需要提供页面名称和页面ID即可。

首先我们先把创建一个页面需要参数的数据结构写出来,在pageJson下新增一个page-json.dto.ts:

javascript 复制代码
export class CreatePage{
  readonly pageId: string;
  readonly pageName: string;
}

再来到我们的service中
xin-builder-server2\src\page-json\page-json.service.ts

javascript 复制代码
  async addPage(body: CreatePage): Promise<void>{
    await this.pageJsonModel.create(body)
  }

create方法就是创建一个模型在数据库中。

最后来到controller中
xin-builder-server2\src\page-json\page-json.controller.ts

javascript 复制代码
  @Post('addPage')
  @ApiOperation({summary: '创建页面'})
  async addPage(@Body() pageJson: CreatePage): Promise<PageJsonResponse> {
    await this.PageService.addPage(pageJson);
    return {
      code: 200,
      message: 'Success.',
    };
  }

OK。实现完之后,我们来到Swagger接口文档中来尝试一下:

新增完之后,你再点击查询接口,就可以查到刚刚添加过的页面信息了。

2.实现查询页面详情的接口

查询页面详情,就是当我查看某个配置好的页面时,掉的接口。 也就是通过pageId去查询,OK,我们在page-json.dto.ts中加一个数据结构:

javascript 复制代码
export class PageInfo {
  readonly pageId: string;
}

然后来到service中:

javascript 复制代码
  async findPageByID(pageInfo: PageInfo): Promise<PageJson>{
    return await this.pageJsonModel.findOne({pageId:pageInfo.pageId})
  }

再来到controller中:

javascript 复制代码
  @Post('findPageByID')
  @ApiOperation({summary: '查询页面详情'})
  @ApiProperty()
  async findPageByID(@Body() pageInfo: PageInfo): Promise<PageJsonResponse<PageJson>> {
    return {
      code: 200,
      data: await this.PageService.findPageByID(pageInfo),
      message: 'Success.',
    };
  }

这样查询页面详情的接口就实现完了,是不是感觉到添加一个接口非常简单。就是这么一套流程。

写完之后,你就可以在Swagger文档上进行查看了:

3. 实现更新页面的接口

更新页面的接口,可以什么时候触发呢?可以在我设计完页面之后,一保存,触发更新。 所以更新接口需要的参数的数据结构,应该和创建页面的一样。

我们直接来到service中:

javascript 复制代码
  async updatePage(body: CreatePage): Promise<void>{
    await this.pageJsonModel.updateOne({pageId: body.pageId},{pageJson: body.pageJson})
  }

然后来到controller中:

javascript 复制代码
  @Post('updatePage')
  @ApiOperation({summary: '更新页面内容'})
  async updatePage(@Body() pageJson: CreatePage): Promise<PageJsonResponse> {
    await this.PageService.updatePage(pageJson);
    return {
      code: 200,
      message: 'Success.',
    };
  }

写完之后,我们可以来到Swagger文档中:

更新完之后,你在通过这个pageId去查询,就会发现pageJson的内容已经改变了。

4.实现删除页面的接口

删除页面的话,就比较简单了。我们只需要根据pageId去删除对应的字段即可。所以它的参数数据结构和查询页面详情的应该是一样的。

我们来到service中:

javascript 复制代码
  async deletePage(pageInfo: PageInfo): Promise<void>{
    await this.pageJsonModel.deleteOne({pageId:pageInfo.pageId})
  }

然后到controller中:

javascript 复制代码
  @Post('deletePage')
  @ApiOperation({summary: '删除页面'})
  async deletePage(@Body() pageJson: CreatePage): Promise<PageJsonResponse> {
    await this.PageService.deletePage(pageJson);
    return {
      code: 200,
      message: 'Success.',
    };
  }

OK,我们现在来到Swagger中尝试一下:

删除之后,你再查询这个页面,就查询不到了。

博主补充

那如果这些接口,你已经完成了全部。是否可以根据这些接口,把前端页面实现出来呢?

当然,下一篇我会把页面也实现。

本篇相关的代码提交在github上:
github.com/TeacherXin/...
commit: 第一节:实现页面的增删改查接口

相关推荐
码爸1 小时前
spark读mongodb
大数据·mongodb·spark
有颜有货16 小时前
低代码开发平台系统架构概述
低代码·系统架构
lgbisha16 小时前
828华为云征文|华为云Flexus X实例docker部署最新Appsmith社区版,搭建自己的低代码平台
低代码·docker·华为云
一个很帅的帅哥17 小时前
实现浏览器的下拉加载功能(类似知乎)
开发语言·javascript·mysql·mongodb·node.js·vue·express
快乐非自愿18 小时前
一文详解低代码开发如何成为学校低成本数字化转型的新引擎
低代码
JY_H19 小时前
MongoDB
数据库·mongodb
Kenneth風车1 天前
【机器学习(七)】分类和回归任务-K-近邻 (KNN)算法-Sentosa_DSML社区版
人工智能·算法·低代码·机器学习·分类·数据分析·回归
东城绝神1 天前
《Linux运维总结:基于ARM64+X86_64架构CPU使用docker-compose一键离线部署mongodb 7.0.14容器版副本集群》
linux·运维·mongodb·架构
香吧香2 天前
mongo 副本集rs 理解和使用小结
mongodb
_xaboy2 天前
开源项目低代码表单FormCreate中通过接口加载远程数据选项
低代码·开源·formcreate·低代码表单·低代码设计器