1.功能说明

在某些复杂的业务场景,通过配置无法实现我们的需求的时候,需要自己开发后台的接口供前端调用,这里介绍自定义后端接口开发的过程。

我们会提供一个demo的项目,通过这个项目,我们可以创建一个基本的后端应用,我们可以在这个基础上开发我们的功能。

2.操作步骤

1.1 下载后端基础代码

点击顶部导航栏的“应用开发”,再点击“后端代码下载”下载基础的后端代码。下载的代码是通用的基于java微服务架构的,需要通过一些配置才能运行起来。

1.2 修改Settings.xml

代码是基于Maven构建的,需要修改Maven的Settings.xml文件中镜像地址,下载平台的基础jar包。如果你已经成功运行了jpaas_sources的代码,可以跳过这一步。如果你还未配置过maven的镜像地址的话,可以联系平台的售后技术支持人员。

1.3 初始化数据库

在我们的项目中提供了一个初始化脚本,我们可以创建一个数据,并且执行脚本。

比如我们的库名为 demo.

执行后数据库如下:

1.4 包名、应用名和路径修改

用IntelliJ IDEA工具打开项目代码如下图(建议2020以上版本),按CTRL+SHIFT+R组合键,在项目中统一替换com.misoft为你自己公司的包名。另外,可以将
pom.xml,application.yml,bootstrap.yml,MybatisPlusConfig.java文件件中demo为你的应用代码(注意:Demo.java,DemoMapper.java,DemoMapper.xml,DemoServiceImpl.java,DemoController.java 这几个文件不用修改,因为表名就是demo)。


另外ClientWebsecurityConfigurer.java文件中的/demo即为控制器路径中的前缀,可根据需要改为你自己的应用代码。配置之后接口才能正常访问,没有在此配置的URL在调用时会被拦截。

1.5 nacos配置

修改nacos-config-dev.properties配置项,增加项目的数据库配置信息:

# demo
demo.datasource.url=jdbc:mysql://localhost:3306/jpaas_oa?useUnicode=TRUE&characterEncoding=UTF-8&autoReconnect=TRUE&zeroDateTimeBehavior=convertToNull&useSSL=FALSE&serverTimezone=GMT%2B8
demo.datasource.username=root
demo.datasource.password=root
demo.datasource.driver=com.mysql.cj.jdbc.Driver
demo.datasource.vaildQuery=SELECT 1

另外还要在SEATA_GROUP下面新建一个service.vgroupMapping.demo_tx_group 配置项,值为:default。操作的时候注意nacos的命名空间。以上配置中的demo可以改为你的应用名称。

1.6 网关路由配置

如果想通过jpaas-gateway-server统一网关来管理后台接口,还需要配置网关路由,其实这也是nacos下的
scg-routes配置项的修改,直接修改JSON格式文件容易出错,平台提供了图形化的界面修改。

进入JPaaS平台,点击导航栏的“系统管理”-“API网关”-“路由管理”,进入网关路由管理功能,点击“新建”按钮,参考图上的说明创建一个微服务网关路由。配置好之后,重启一下jpaas-gateway-server微服务。

1.7 启动配置

经过上面的配置之后,如果代码没有报错的话,就可以启动运行了。

  • 打开服务视图子窗口,快捷键Alt +8 ;
  • 如果视图子窗口中没有内容,点击“+”-“Run Configuration Type”,选择“Spring Boot”,微服务的启动类增加进来;
  • 鼠标右击“Spring Boot”下面的微服务,点击“Edit Configuration…”菜单,弹出对话框;
  • 配置名称,可修改;
  • java虚拟机参数,图上配置了初始内存,最大内存;
  • 选择短命令行运行,不然会报错,因为引用的类库太多;
  • 配置nacos的地址和命名空间;
  • 点击“OK”按钮保存配置;
  • 点击运行或调试图标,启动程序;

1.8 PostMan测试接口

启动了微服务之后,就可以测试DemoController控制器中的接口了,默认的增、查、删、改接口都在BaseController中实现了,个性化的接口才需要自己实现。下图是通过PostMan来测试findByBirthday接口的,你也可以用其他工具来测试。

这里的测试URL没有通过网关的前缀访问的,所以请求头中不用带Authorzation参数。

如果测试时出现已经调用到了接口ip,但是连接不上,可以修改防火墙入站规则:
将本地要启动的微服务用到的端口都打开

1.9 代码生成器生成代码

Demo.java,DemoMapper.java,DemoMapper.xml,DemoServiceImpl.java,DemoController.java 这五个文件内容几乎都是用生成器生成出来的,只是少量的修改。不仅如此,前端的一些代码也是可以一起生成的。

代码生成器程序在codegen目录下,具体的使用可以参考这里:http://doc.redxun.cn/docs/jpaas/generateCode

1.10 前端如何调用?

请看下节:http://doc.redxun.cn/docs/jpaas/customFrontpage

2. 常见问题

2.1 自定义包名的问题

在开发代码时,大部分都需要使用自己公司的包名进行开发,这个时候可能遇到各种错误,错误的原因时没有找到 com.redxun的包。

解决办法如下:

@EnableFeignInterceptor
@EnableFeignClients(basePackages = {"com.redxun"})
@EnableDiscoveryClient
@SpringBootApplication(scanBasePackages = {"com.redxun","com.misoft"})
public class JPaasDemoApplication {

    public static void main(String[]args) {
        SpringApplication.run(JPaasDemoApplication.class, args);
    }


    @Bean
    MeterRegistryCustomizer<MeterRegistry> configurer(
            @Value("${spring.application.name}") String applicationName) {
        return (registry) -> registry.config().commonTags("application", applicationName);
    }
}

增加两个扫描即可以解决。

文档更新时间: 2022-08-03 18:24   作者:张敏