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);
}
}
增加两个扫描即可以解决。