更新时间 2021.04.21

介绍

  • 介绍如何在本地通过 PAI 来进行微服务开发

前置条件

  • 开发环境配置:开发环境安装
  • Demo 程序已经开发完毕,详见 前置步骤 应用开发流程
  • Demo 程序源码:

本地测试

  • 本地测试不需要认证,只需本地启动即可使用Swagger 进行接口测试

准备工作

  • 本地测试不需要用户登录,首先注释启动类上的 @EnablePaiResourceServer 注解,该注解启动了Token的校验,本地不需要。
  • 关闭Spring Security 的安全配置,在项目中加入配置类,关闭校验,但不要把这个配置提交的Git仓库,只适用本地测试。
package cn.flyrise.pai.democy.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();
    }
}

启动 demo 服务

使用IDEA 启动服务

API 测试

访问本地服务 localhost:8080/doc.html

集成测试

  • 集成测试即讲本地服务注册到注册中心,通过 swagger 测试API

操作示例

1. 服务注册

  • 在启动类 Application 有 @SpringCloudApplication 的注解,如果没有就添加该注解。

  • 观察 bootstrap.yml 中参数

    spring:
    port: 8080
    application:
      name: pai-demo-cy
    profiles:
      # 环境配置
      active: dev
  • 观察 bootstrap-dev.yml 中参数

127.0.0.1 仅用来参考,具体以实际分配地址为准。

spring:
  cloud:
    nacos:
      discovery:
        namespace: b35efc59-d693-4a20-9489-90ff09efbc51
        server-addr: http://127.0.0.1:8848
        file-extension: yaml
        # Nacos 服务开启认证时需要配置
        # username: 
        # password: 
        # context-path: nacos
      config:
        namespace: b35efc59-d693-4a20-9489-90ff09efbc51
        server-addr: http://127.0.0.1:8848
        file-extension: yaml
        # 读取Nacos配置时间(默认3000,单位:毫秒)
        # timeout: 3000
        # Nacos 服务开启认证时需要配置
        # username: 
        # password: 
        # context-path: nacos
  • 这些配置都是在创建项目的时候产生的,无需修改即可使用。
  • 如果本地是局域网内,一般需要关闭防火墙或者开放端口,别的服务才能访问到本地服务。
  • 如果本地有多块网卡,如本地有虚拟机、VPN 等,需要在配置文件中指定注册的IP网段,否则服务器上访问到其它网段可能导致访问不通本地服务。
spring:
  cloud:
    inetutils:
      # 本地多网卡时,忽略回环网卡
      ignored-interfaces[0]: lo
      # 本地多网卡时,选择注册的网段
      preferred-networks[0]: xx.xx

2. 配置服务路由

  • 服务在部署后默认 会生成 xxx-api 的路由 例如 demo 服务有个 获取用户的接口
  • 本地访问用户接口地址: localhost:8080/getUser
  • 部署到pai 后的接口地址: pai.flyrise.cn/demo-api/getUser

3. 接口权限

PAI 的接口权限遵循 RBAC。需要在接口上添加 @PreAuthorize() 注解。
详情请看

文档更新时间: 2024-03-25 11:23   作者:朱灿奕