• 前置条件

    介绍

    本小节介绍如何在本地通过 HZERO 来进行微服务开发。

    本地测试

    .1 准备工作

    package org.hzero.todo.config;
    
    import org.springframework.context.annotation.Configuration;
    import org.springframework.security.config.annotation.web.builders.HttpSecurity;
    import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
    
    @Configuration
    public class CustomWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
    
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            // 禁用 security basic 验证
            http.httpBasic().disable();
            // 禁用 csrf
            http.csrf().disable();
        }
    }
    

    .2 启动 todo 服务

    进入hzero-todo-service目录下,运行以下命令启动本地项目

    mvn clean spring-boot:run
    

    .3 API 测试

    • 本地开发服务,如果不调用其他服务,则不需要注册中心,也不需要注册到注册中心上,在TodoServiceApplication中不需要添加@EnableEurekaClient 注解。

    集成测试

    .1 服务注册

    eureka:
      instance:
        # 以IP注册到注册中心
        preferIpAddress: ${EUREKA_INSTANCE_PREFER_IP_ADDRESS:true}
        leaseRenewalIntervalInSeconds: 5
        leaseExpirationDurationInSeconds: 10
        # 服务的一些元数据信息
        metadata-map:
          VERSION: 0.11.0
      client:
        serviceUrl:
          # 注册中心地址,多个用逗号隔开
          defaultZone: ${EUREKA_DEFAULT_ZONE:http://dev.hzero.org:8000/eureka}
        registryFetchIntervalSeconds: 10
        disable-delta: true
    
    spring:
      cloud:
        inetutils:
          # 本地多网卡时,忽略回环网卡
          ignored-interfaces[0]: lo
          # 本地多网卡时,选择注册的网段
          preferred-networks[0]: xx.xx
    

    .2 配置服务路由

    package org.hzero.todo.config;
    
    import io.choerodon.core.swagger.ChoerodonRouteData;
    import io.choerodon.swagger.annotation.ChoerodonExtraData;
    import io.choerodon.swagger.swagger.extra.ExtraData;
    import io.choerodon.swagger.swagger.extra.ExtraDataManager;
    
    /**
     * 服务路由配置
     */
    @ChoerodonExtraData
    public class TodoExtraDataManager implements ExtraDataManager {
    
        @Autowired
        private org.springframework.core.env.Environment environment;
    
        @Override
        public ExtraData getData() {
            ChoerodonRouteData choerodonRouteData = new ChoerodonRouteData();
            choerodonRouteData.setName(environment.getProperty("hzero.service.current.name", "htdo"));
            choerodonRouteData.setPath(environment.getProperty("hzero.service.current.path", "/todo/**"));
            choerodonRouteData.setServiceId(environment.getProperty("hzero.service.current.service-name", "hzero-todo-service"));
            extraData.put(ExtraData.ZUUL_ROUTE_DATA, choerodonRouteData);
            return extraData;
        }
    }
    

    .3 接口权限

    HZERO 的接口权限遵循 RBAC。需要在接口上添加 @Permission() 注解。

    包含如下参数。

    参数名 说明
    level 接口层级,ResourceLevel.SITEResourceLevel.ORGANIZATION 两种
    permissionLogin 登录允许访问,默认为false
    permissionPublic 公开接口,默认为false

    其中如果层级为租户层,则接口的 mapping 中必须包含 organization_idorganizationId 作为参数变量,否则网关校验权限时会校验不通过。

    Swagger 测试

    .1 选择测试服务

    .2 用户认证

    .3 API 测试

    POSTMAN 测试

    .1 获取授权 access_token

    .2 API 测试

    文档刷新

    刷新权限