华为云用户手册

  • 迁移流程 对象存储迁移 服务 OMS 的迁移工作原理图,如图1所示。 图1 迁移工作原理图 迁移工作流程说明: OMS服务请求获取一定数量的源端对象列表。 源端响应对象列表。 OMS服务请求获取源端对象元数据。 源端响应对象元数据。 OMS服务请求获取目的端对象元数据。 目的端响应对象元数据。 根据对象元数据判断对象是否需要迁移。 若迁移任务配置“同名对象覆盖方式”选择“不覆盖”或者“全覆盖”,则步骤5~7跳过。 OMS服务请求获取源端对象数据。 源端响应对象数据。 OMS服务将对象数据写入目的端。 目的端响应写入结果。 OMS服务请求获取源端对象元数据。 源端响应对象元数据。 OMS服务请求获取目的端对象元数据。 目的端响应对象元数据。 通过元数据校验数据的完整性和一致性。 重复步骤3~16,完成步骤1中获取的全部对象迁移工作。 重复步骤1~17,完成迁移任务中的全部对象迁移工作。 父主题: 迁移工作原理
  • 产品优势 对象存储迁移服务具备的优势主要有如下几点: 简单易用 对象存储迁移服务的使用方法简单,您通过登录管理控制台创建迁移任务后,即可等待系统完成迁移,中途无需额外操作。 安全认证 对象存储迁移服务的鉴权支持AK/SK方式,启动数据传输时会充分认证身份的合法性,避免数据被盗用。 创建迁移任务时您需要输入AK/SK进行安全认证,校验成功后,系统才可以访问源端和目的端的迁移数据,从而成功创建迁移任务。 迁移任务创建成功后,AK/SK会被加密存放在数据库中。加密AK/SK采用的是业界通用的高级加密标准AES(Advanced Encryption Standard)。 当迁移任务失败、成功或者暂停时,会删除AK/SK。 如果迁移任务处于等待状态,则AK/SK会被暂时保存。AK/SK的最大保存时间为72小时。 传输加密 对象存储迁移服务支持通过HTTPS加密在线传输数据,确保数据在传输过程中的安全。 源端云服务提供商可能只支持HTTP在线传输,请在迁移前及时了解。 存储加密 对象存储迁移服务可以对迁移后存储在华为云中的对象数据进行加密,使您的对象数据存储更安全。
  • 下载与上传流量费用 数据迁移时,OMS会先将数据从源端下载,再将数据上传至OBS,这个过程会产生一定的流量费用。 源端下载数据时,会产生流量费用,流量由数据的实际大小决定,费用由源端数据所在云服务商收取。 为节省您的费用,建议您开通CDN流量包或使用OMS多策略限速功能,在对象存储非闲时采取限速。具体CDN流量包和闲时流量包费用,以各云服务商 定价 为准。 如果使用OMS的自动解冻功能,还会存在对象解冻/取回费用。 数据上传至华为云OBS不收取流量费用。 同一区域内,无论是同账号迁移或跨账号迁移,均不会产生流量费用。
  • 收集范围 对象存储迁移服务收集的个人数据如表1所示: 表1 个人数据范围列表 类型 收集方式及目的 是否可以修改 是否必须 生命周期 源端AK(Access Key) 用户在界面输入,用于鉴权认证 否 是,使用HTTP/HTTPS数据源时为非必须 迁移任务、迁移任务组:在任务执行完成(无论成功/失败)或用户暂停后,系统自动清除。 同步任务:创建后默认保留,用户停止任务后,系统自动清除。 源端SK(Secret Key) 用户在界面输入,用于鉴权认证 否 源端CDN密钥 用户在界面输入,用于鉴权认证 否 否,CDN迁移场景下为必须 目的端AK(Access Key) 用户在界面输入,用于鉴权认证 否 是 目的端SK(Secret Key) 用户在界面输入,用于鉴权认证 否 是
  • API请求次数 OMS在数据迁移前需要对源端和目的端的文件进行对比;迁移时将源端数据下载后上传到目的端;迁移完成后校验文件,会产生API请求。API请求分为每个对象基本请求+ 公共请求(列举对象,上传失败对象列表,网络异常重试,自动解冻等)。不同场景下,API请求次数不同。 目的端不存在源端同名对象 对源端的操作 迁移前判断对象是否存在+对比数据需要一次请求:head 迁移数据需要一次请求:get 迁移完成后校验数据需要一次请求:head 对目的端的操作 迁移前对比数据需要一次请求(判断对象是否存在):head 迁移数据需要一次请求:put 迁移完成后设置数据存储类型需要一次请求:put 迁移完成后校验数据需要一次请求:head 目的端存在源端同名对象(大小一致,且目的端最后修改时间晚于源端最后修改时间),重复对象,无需迁移。 对源端的操作 迁移前判断对象是否存在+对比数据需要一次请求:head 对目的端的操作 迁移前对比数据需要一次请求(判断对象是否存在):head 目的端存在源端同名对象(大小不一致,或源端最后修改时间晚于目的端最后修改时间),不同对象,目的端对象会被源端对象覆盖。 对源端的操作 迁移前判断对象是否存在+对比数据需要一次请求:head 迁移数据需要一次请求:get 迁移完成后校验数据需要一次请求:head 对目的端的操作 迁移前对比数据需要一次请求(判断对象是否存在):head 迁移数据需要一次请求:put 迁移完成后设置数据存储类型需要一次请求:put 迁移完成后校验数据需要一次请求:head 若源端需要迁移的文件大于50 MB,则迁移数据时会将文件进行分段后再上传,单个分段大小为50 MB,此时迁移数据的请求数根据迁移数据大小决定。 例如:大小为200 MB的文件会被分成四段上传,源端产生2次head,4次get,目的端产生2次head,5次put(4个分片上传+一次合并)请求。 API请求的实际费用以各云服务商定价为准,华为云OBS的费用请参考产品价格详情。
  • 计费方式 对象存储迁移服务(Object Storage Migration Service,以下简称OMS)当前处于免费期,免费期内使用OMS服务不收取任何费用。免费期结束后,OMS服务将根据您使用的迁移流量进行收费,计费方式简单灵活、易于预测。具体费用详情,请参见产品价格详情。 迁移过程中会调用源端和目的端的 对象存储服务 的API进行数据的上传、下载,所以会产生一定的API请求及下载流量费用,具体费用说明请参见API请求次数与下载与上传流量费用。
  • 估算迁移计费 一般情况,迁移费用可参考如下公式估算: 迁移费用=调用源端API次数 x 源端API调用单价+调用目的端API次数 x 目的端API调用单价+对象总容量x 源端出口流量单价 调用源端API次数=(对象总数/1000)+对象总数 x 3 调用目的端API次数=对象总数 x 4 源端出口流量单价(根据源端云服务商套餐确定) 华为云只负责收取调用目的端API的费用;调用源端API的费用和源端出口流量费用均由源端云服务商收取。 迁移时忽略的对象由于需要判断对象是否存在+对比数据,因此在源端和目的端均会产生API请求费用,但由于忽略对象并没有迁移,因此不会产生流量费用。
  • 修订记录 发布日期 修订记录 2024-03-22 第二十三次正式发布。 新增迁移工作原理 新增迁移网络模型 2023-10-17 第二十二次正式发布。 更新计费说明中的API请求次数。 2023-06-20 第二十一次正式发布。 约束与限制新增“迁移范围”、“迁移速度”、“归档数据”限制说明。 2023-06-05 第二十次正式发布。 约束与限制新增目的端桶类别限制。 2023-04-25 第十九次正式发布。 更新约束与限制。 2022-09-27 第十八次正式发布。 新增安全章节。 2022-08-02 第十七次正式发布。 更新产品功能。 更新权限管理。 2021-10-09 第十六次正式发布。 计费说明章节新增“估算迁移费用”。 2021-04-23 第十五次正式发布。 优化约束与限制章节。 2021-03-18 第十四次正式发布。 新增功能特性章节。 2021-03-10 第十三次正式发布。 权限管理章节内容优化。 2021-01-14 第十二次正式发布。 计费说明章节内容优化。 2020-08-06 第十一次正式发布。 计费说明章节内容优化。 2020-06-19 第十次正式发布。 新增个人数据保护机制章节。 2020-04-01 第九次正式发布。 新增计费说明章节。 2020-02-10 第八次正式发布。 新增权限管理章节。 2019-10-15 第七次正式发布。 源端云服务商增加微软云。 2019-08-31 第六次正式发布。 更新产品功能。 更新和其他服务的关系。 2019-07-05 第五次正式发布。 增加隐私声明一节。 2019-04-29 第四次正式发布。 在什么是对象存储迁移服务中,增加应用场景。 在什么是对象存储迁移服务中,删除同名覆盖说明,内容移至常见问题。 在产品功能中,更新功能表述。 在和其他服务的关系中,增加 数据加密 服务。 2019-04-17 第三次正式发布。 在什么是对象存储迁移服务中,更新同名覆盖的说明。 在和其他服务的关系中,采用表格进行描述。 在产品功能中,新增迁移评估。 2018-12-21 第二次正式发布。 在产品优势中,对传输加密功能增加说明。 2018-04-09 第一次正式发布。
  • 选中组件 添加了组件之后,您可以选中组件,对组件进行修改、删除、移动等操作。 以下为选中组件的相关方法: 从画布中直接单击组件选中组件。 图6 直接单击选中组件 在左侧大纲树插件中,以树的形式展示了当前页面中所有的组件,单击树节点选中画布中的组件。 图7 单击树节点选中组件 底部节点树展示了从根节点到当前选中组件的层级节点,单击底部的节点树的某一个节点,选中父组件。 图8 展示当前选中组件的层级节点 图9 单击节点树的父点,选中父组件
  • 购买基础版实例 进入购买Astro企业应用实例页面。 “实例规格”选择“基础版”,设置购买时长,单击“立即购买”。 图1 选择购买规格 确认订单无误后,单击“去支付”。 图2 确认订单 选择支付方式,单击“确认付款”,完成支付。 订单支付成功后,单击“返回Astro企业应用控制台”。 在Astro企业应用控制台中,可以查看到Astro企业应用的实例状态。当“实例状态”变为“运行中”时,说明实例已安装好,可以正常使用Astro企业应用。 图3 查看实例状态
  • 购买扩容包 扩容包仅适用于在购买专业版或企业版的基础上使用,不可单独购买和退订。扩容包的使用截止时间与主资源的截止时间保持一致。 参考购买实例中操作,购买AstroPro企业版实例。 在已购买的实例中,单击“操作”,选择“扩容”。 图4 选择扩容 在购买扩容包页面,设置购买数量,单击“立即购买”。 一个资源扩容包,包含用户数50个、应用数20个、实体个数200个,请按需设置购买数量。 图5 购买扩容包 选择支付方式,单击“确认付款”,完成订单支付。
  • 编写全局样式 参考登录AstroPro界面中操作,登录AstroPro界面。 在左侧导航栏中,选择“前端应用”。 单击待编辑应用模块内的“开发应用”,进入设计器。 画布中选中组件,在组件属性设置面板选择“样式”。 单击全局样式的。 在弹框中直接编写全局样式。 可以直接声明多条 CSS 样式或其他媒体查询的样式。 图3 编写全局样式 单击“保存”,完成全局样式编辑。 通过类名绑定已创建的全局样式。 图4 效果展示
  • 购买实例 进入购买Astro企业应用实例页面。 “实例规格”选择“企业版”,其他参数按需进行设置,单击“立即购买”。 图1 选择购买规格 确认订单无误后,单击“去支付”。 以购买企业版一年为例,若为基础版,此处配置费用为“0”。 图2 确认订单 选择支付方式,单击“确认付款”,完成支付。 订单支付成功后,单击“返回Astro企业应用控制台”。 在Astro企业应用控制台中,可以查看到Astro企业应用的实例状态。当“实例状态”变为“运行中”时,说明实例已安装完成,可以正常使用Astro企业应用。 图3 查看实例状态
  • 步骤3:生成策略 生成策略和基本配置、框架配置一样,需要您根据实际情况进行勾选配置,不同的配置会呈现不同的效果。 API设置。 图1 API设置 Json序列化 小驼峰:序列化后的json属性名,采用驼峰格式。 下划线:序列化后的json属性名,采用下划线连接单词。 标准响应体:返回的响应体是否使用标准样式。 { "code": 200, "msg": "success", "data": { "name": "zhangsan", "birthday": "1990-01-01", "other_properties": "..." }} Web框架模型:生成基于spring-webmvc的API层。 关闭API中根对象前缀:设置为“是”时,sharding bo的API前面不需要添加root bo的路径。 注意:关闭API中根对象前缀为Astro Pro专业版/企业版功能,如果您需要使用此功能,请升级Astro Pro实例版本。 查询参数阈值:设置查询参数阈值,值为“0”时不生效。当查询参数大于该阈值时,将多个查询参数转换为对象。 设置代码风格。 图2 设置代码风格 配置文件格式:配置spring boot properties文件格式。 yaml :配置文件使用yaml格式。 properties :配置文件使用properties格式。 Lombok插件:是否为DO、DTO或QO定义类自动生成Lombok注解。 工程目录:设置生成代码的工程目录样式,默认为DDD。 单Module:工程目录结构只有一个模块。 base/service:工程目录结构包含base和service两个模块。 DDD:和单Module一样,工程目录结构只有一个模块。 图3 工程目录不同类型设置效果 module添加服务名前缀:配置为“是”时,模块名称前会添加服务名前缀。 图4 开启前后效果 设置部署信息。 图5 设置部署信息 服务部署脚本 对接CCE部署和ServiceStage部署时,生成的代码中会包含如下内容: 根目录中会增加“ .cam”文件夹,包含“cam.yml”和“variables.yml”文件。 service模块的“application.yam”文件中,会增加“server.tomcat”配置参数。 dockerfile脚本会做相应的修改。 注意:配置服务部署脚本为Astro Pro专业版/企业版功能,如果您需要使用此功能,请升级Astro Pro实例版本。 服务打包方式 jar:打成jar包。jar通常包含一些Java类文件、相关元数据和资源,在声明了Main_class后可使用java命令运行。 war:打成war包。war是Java Web应用程序的标准打包格式,war是一个Web模块,包括WEB-INF目录,可直接运行于Web容器中。 性能测试。 注意:性能测试配置为Astro Pro专业版/企业版功能,如果您需要使用此功能,请升级Astro Pro实例版本。 图6 性能测试 CodeArts性能测试:是否使用CodeArts PerfTest进行性能测试。性能测试CodeArts PerfTest是一项为基于HTTP/HTTPS/TCP/UDP/HLS/RTMP/WEBSOCKET/HTTP-FLV等协议构建的云应用提供性能测试的服务,支持快速模拟大规模并发用户的业务高峰场景,可以很好的支持报文内容和时序自定义、多事务组合的复杂场景测试,测试完成后会为您提供专业的测试报告呈现您的服务质量。更多关于CodeArts PerfTest的介绍,请参见性能测试CodeArts PerfTest。 代码架构看护测试:是否启用看护代码架构,看护代码的分层调用、命名规范和注解规范等。“代码架构看护测试”设置为“是”时,在代码中会生成一个“test”目录。 图7 开启代码结构看护测试效果 租户配置。 注意:租户配置为Astro Pro专业版/企业版功能,如果您需要使用此功能,请升级Astro Pro实例版本。 图8 租户配置 多租模型:是否支持多租户资源隔离。 Tenant:支持多租模式,BO级多租配置multiTenant生效,开启BO级多租的业务对象必须关联到租户,包含租户id字段,租户id字段可自定义名称。 否:无内置租户模型。 租户验证方式:设置租户ID资源获取方式。“多租模型”设置为“Tenant”时,才显示该配置。 Header:使用header头携带方式传入tenantId。 Token:使用token方式传入tenantId。 设置完成后,单击“下一步”,进入业务设计页面。 父主题: 编辑服务
  • 关系属性设置 在业务设计页面,拖入一个BO业务对象(命名为Bo5)单击“relations”中的“树递归”,为对象建立树递归关系。选中已创建的关系,在右侧页面即可设置关系属性,如图2所示。 图2 树递归 关系名称:设置树递归关系的名称。 关系类型:根据创建的树递归关系自动生成。 关系首要方:根据创建的树递归关系自动生成。 关系次要方:根据创建的树递归关系自动生成。 关系操作:对象关系可执行哪些操作,如新增、删除、查询、批量新增、批量删除和批量查询。 每个Bo5可以包含多少个子Bo5:一个首要方(父节点)和次要方(子节点)建立关联的数量上限。 每个父节点能有多少子节点上限预警值:首要方(父节点)一条数据最多关联次要方(子节点)多少条数据报出告警。
  • 组件协议结构规范 组件协议结构规范用于描述组件的关键信息和配置项,对应组件的components字段。 表1 组件协议结构规范 字段 说明 类型 name 组件名称,以“i18n”形式配置。 Object component 组件名。 String icon 组件图标。 String screenshot 快照。 String description 组件介绍描述。 String npm 组件NPM包信息,会根据此描述引入npm源组件。 Object npm.package npm包名。 - npm.exportName 需要从npm包中import的名称。 - npm.version package的版本。 - npm.destructuring 是否以结构方式import。 - npm.script ESModule格式的JS文件CDN地址。 String npm.css 样式文件CDN地址。 String group 组件分组。 String schema 组件元数据(定义属性、事件等)。 Object configure 组件的属性信息。 Object version 组件版本。 Object
  • 模板文件介绍 所有的自定义组件都在src/components文件夹里面内开发,模板内提供了两个预置模板componentA和componentB,可直接在模板基础上进行开发,如需更多可复制添加。 图1 默认组件 components都包含三个文件,一个index.js,一个*.vue文件和一个componentBundle.json文件,其中index.js和componentBundle.json这两个文件名字不可更改。 图2 components文件夹 componentBundle.json:用于定义一组组件的元数据,包括组件的配置、依赖关系、版本信息等。 index.js:作为应用程序的入口文件,即程序启动时首先执行的脚本。 *.vue:用于定义Vue组件,包括模板(HTML)、脚本(JavaScript)和样式( CS S)。
  • 属性说明 在业务设计页面,从“business”中,拖拽“Value Object”对象至画布空白区域。选中对象,在右侧页面设置对象属性,如图4所示。 图4 Value Object 对象名称:设置对象的名称,必须使用大驼峰格式,不允许存在连续的大写字母。 中文名:设置对象的中文名称。 软删除策略:开启软删除策略后,数据删除时执行逻辑删除,数据仍然保留在数据库中。关闭软删除策略后,数据删除为物理删除,即直接从数据库中删除,不可恢复。 注意:购买AstroPro企业版实例时,才会显示“软删除策略”这个配置项。 恢复软删除:当开启“软删除策略”时可配置。开启恢复软删除,则支持将软删除的数据恢复。 支持BO多租:BO是否支持多租。开启BO多租时,请确保“多租模型”已开启。 注意:购买AstroPro专业版或企业版实例时,才会显示“支持BO多租”配置项。 图5 开通多租模型 不允许修改:对象是否支持修改。 操作:对新建的对象可执行哪些操作,如新增、更新、删除、查询、批量新增、批量更新、批量查询、批量删除和自定义查询。默认值为新增、更新、删除、查询和批量查询。 对象版本化:通过版本号的机制实现的乐观锁功能。开启此功能时,会在表中自动添加一个devspore_verion的字段来记录版本。在更新操作时会检查当前版本号和DB中的版本号是否一致,一致则更新数据并增加版本号,如果不同则说明数据已被其他事务修改,更新失败。 注意:购买AstroPro企业版实例时,才会显示“对象版本化”配置项。 对象描述:对象的描述信息。 字段:单击右侧属性配置的“字段”,可以为对象添加所需的字段。
  • 使用说明 AstroPro为每个项目预置了项目管理员、架构师和开发者三种类型的角色。 项目管理员 可以增删改査项目下的所有资源。 可以为项目下的所有角色分配用户(仅限于同账号下的用户,如图1中的 IAM 用户1、IAM用户2)。 图1 华为账号与IAM用户 架构师 可以新建服务。 可以删除本人创建的服务,不能删除其他人创建的服务。 可以对项目下的所有服务进行编辑。 开发者 可以查看项目下的所有资源。 可以重新编译有权限项目下的服务并下载代码。
  • 约束与限制 IAM用户(如IAM用户1)必须已添加到用户组admin或group。加入用户组后,用户才会具备用户组的权限。若不加入用户组,登录AstroPro服务时,会提示您没有当前服务的访问权限。 admin:缺省用户组,具有所有云服务资源的操作权限。将用户加入该用户组后,用户可以操作并使用所有云服务资源。如果您创建的IAM用户是管理员,才需要将其加入默认用户组“admin”中。 group:自定义的用户组,如何创建一个用户组,请参见创建用户组并授权。自定义用户组时,必须为用户组添加“Astro Pro FullAccess”和“Astro Pro InstanceManagement”系统策略,如图3。 图2 通过用户组为用户授权 图3 自定义用户组必须具备权限
  • 6、x-controller-annotations 作用: 添加指定的注解。 该标签用于在api实现类上添加指定的注解。 标签值类型: String 使用位置: x-class-annotations(定义在swagger最外层,所有的api实现类上都会添加指定注解) components.schemas.model.x-class-annotations(定义在指定tag下,只会在具体api实现类上添加指定注解) 使用示例: swagger: "2.0"info: description: "" version: "v1" title: "testSwagger" termsOfService: "http://www.coarl.org/service.html"host: "git.huawei.com"basePath: "/testswagger"x-imports: - "org.springframework.context.annotation.Profile;" # 使用的时候结尾一定要带上 ;x-controller-annotations: # 此处添加的注解,在所有生成的api实现类上都会添加,需要使用x-imports手动导入相应的包 - '@Profile("test")' 使用效果: 使用前: public class CardApiController implements CardApi { ------} 使用后: @Profile("test") // 通过x-controller-annotations引入的注解public class CardApiController implements CardApi { ------}
  • 4、x-annotations 作用: 添加指定的注解。 该标签用于在api的参数或者dto指定属性上添加注解。 标签值类型: List 使用位置: paths.path.operation.parameters.x-annotations(定义在api中的参数上时,只在此参数上生成对应的注解) definitions.model.properties.property.x-annotations(定义在dto的字段上时,只在此字段上生成对应的注解) 使用示例: Card: type: "object" properties: id: type: "string" description: "id" example: "id" balance: type: "integer" format: "int64" description: "balance" example: 123 address: type: "string" description: "address" example: "address" x-annotations: - "@InjectMocks" # 此处在address属性上添加了一个 @InjectMocks 注解 x-imports: - "org.mockito.InjectMocks;" # x-annotations实际是把 @InjectMocks当做字符串添加到了address上,所以需要自己通过x-imports导入相应的类 creator: type: "string" description: "creator" example: "creator" create_time: type: "string" format: "date-time" default: "CURRENT_TIMESTAMP" description: "create time" example: "2020-02-27 15:00:08" modify_time: type: "string" format: "date-time" default: "CURRENT_TIMESTAMP" description: "modified time" example: "2020-02-27 15:00:08" description: type: "string" description: "description info" example: "description" xml: name: "card" namespace: "com.huaweicloud.icsl.model" 使用效果: 使用前: public class Card implements Serializable { private static final long serialVersionUID = 1L; ----- @JsonProperty("address") private String address = null; ----} 使用后: public class Card implements Serializable { private static final long serialVersionUID = 1L; ------- @JsonProperty("address") @InjectMocks // 通过 x-annotations 引入的注解 private String address = null; --------}
  • 21、x-pom-gav 作用 自定义标签-pom坐标引入。 标签值类型 List 使用位置 x-pom-gav components.schemas.model.x-pom-gav components.schemas.model.properties.property.x-pom-gav paths.path.operation.x-pom-gav paths.path.operation.parameters.name.x-pom-gav x-pom-gav在Swagger文件中的位置可以是类级别、方法级别、参数级别,groupId、artifactId、version按照顺序用:连接,全局有一个地方定义即可,不需要重复定义。 使用示例 swagger: "2.0"info: description: "" version: "v1" title: "testSwagger" termsOfService: "http://www.coarl.org/service.html"host: "git.huawei.com"basePath: "/testswagger"x-entity-package: "customdto"x-interface-name-style: SERVICE_IMPL_AND_NO_I_INTERFACE_PREFIXx-user-defined-consumes: truex-pom-gav: # 手动引入hibernate-validator:依赖 - "org.hibernate.validator:hibernate-validator:8.0.1.Final"------- 使用效果: 使用前: pom中没有org.hibernate.validator:hibernate-validator:8.0.1.Final的依赖 使用后: pom中生成org.hibernate.validator:hibernate-validator:8.0.1.Final的依赖
  • 5、x-class-annotations 作用: 添加指定的注解。 该标签用于在api接口或者dto类上添加指定的注解。 标签值类型: List 使用位置: x-class-annotations(定义在swagger的最外层时,会在所有的api接口上都添加指定的注解) components.schemas.model.x-class-annotations(定义dto对象上时,只在该对象上添加指定的注解) 使用示例: swagger: "2.0"info: description: "" version: "v1" title: "testSwagger" termsOfService: "http://www.coarl.org/service.html"host: "git.huawei.com"basePath: "/testswagger"x-imports: - "org.springframework.stereotype.Controller;" # 使用的时候结尾一定要带上 ; - "org.springframework.transaction.annotation.Transactional;"x-class-annotations: #此处添加的注解,在所有生成的api上都会添加 - "@Controller" # 此处会将 @Controller识别为一个字符串添加到api接口类上,并不会导入相应的包,需要使用 x-imports标签手动导入相应的包 - "@Transactional" # 此处会将 @Transactional识别为一个字符串添加到api接口类上,并不会导入相应的包,需要使用 x-imports标签手动导入相应的包 使用效果: 使用前: package com.huaweicloud.icsl.api;import ------/** * CARDApi interface */public interface CARDApi { -----------} 使用后: package com.huaweicloud.icsl.api;import org.springframework.stereotype.Controller; // 通过x-imports 引入的导包import org.springframework.transaction.annotation.Transactional; // 通过x-imports 引入的导包/** * CARDApi interface */@Controller // 通过x-class-annotations 引入的注解@Transactional // 通过x-class-annotations 引入的注解public interface CARDApi { -----------}
  • 9、x-type 作用: 给dto的字段设置指定的类型。 标签值类型: String 使用位置: components.schemas.model.prorperties.field.x-type(设置在dto的指定字段上时,改变该字段的类型为指定类型) 使用示例: definitions: Contain: type: "object" x-generic: T x-extends: Parent properties: name: type: "string" description: "" example: data: type: "string" x-type: T # 通过x-type指定data的类型为T, 此处是将T当为一个字符串设置上,如果设置为一个对象时,需要使用x-imports手动导入相应的包 xml: name: "Contain" namespace: "com.huaweicloud.icsl.app.dto" --------------- 使用效果: 使用前: public class Contain implements Serializable { private static final long serialVersionUID = 1L; @JsonProperty("name") private String name = null; @JsonProperty("data") private String data = null;} 使用后: public class Contain implements Serializable { private static final long serialVersionUID = 1L; @JsonProperty("name") private String name = null; @JsonProperty("data") private T data = null;}
  • 16、x-enum-class-name 作用 用于标识查询参数对应的枚举类。 标签值类型 String 使用位置 paths.path.operation.parameters.fields.x-enum-value-type 对应的是swagger中已定义的枚举对象名字。 使用示例 Paths: /v1/orders/{order_id}/order-details: get: tags: - "Order" summary: "查询OrderDetail" description: "Returns OrderDetail" operationId: "ListOrderDetails" x-is-registered: 'N' x-support-sdk: 'N' x-mybatis-paging: true consumes: - "application/json" produces: - "application/json" parameters: - name: "status" in: "query" description: "status" required: false type: "string" x-enum-class-name: "OrderStatus" #此标签只在查询参数中使用 -------- 使用效果: 使用前: public class ListOrderDetailsQo implements Serializable { private static final long serialVersionUID = 1L; @JsonProperty("status") private Object status = null; -------------------} 使用后: public class ListOrderDetailsQo implements Serializable { private static final long serialVersionUID = 1L; @JsonProperty("status") private OrderStatus status = null; -------------------}
  • 17、x-entity-package 作用: 用于在swagger中指定实体类dto生成的包名。 标签值类型: String 使用位置: x-entity-package(定义在swagger的最外层) 使用示例: swagger: "2.0"info: description: "" version: "v1" title: "testSwagger" termsOfService: "http://www.coarl.org/service.html"host: "git.huawei.com"basePath: "/testswagger"x-entity-package: "customdto" ------------ 使用效果: 使用前: #dto对象生成目录 xxx.xx.xx.dto 使用后: #dto对象生成目录 xxx.xx.xx.customdto
  • 2、x-default-empty 作用: 只支持get请求,指定String类型参数生成默认值为""。 需要配合metadata元数据中generatorPolicy的queryParamLimit使用,当将请求参数转换为对象后此标签才会生效。 标签值类型: boolean 使用位置: paths.path.operation.parameters.name.x-default-empty 当该标签置为true时,原定义默认值的default标签失效,该标签只可用于定义String参数为""。 使用示例: paths: /v1/cards: get: # 该接口设置了查询参数转换为对象的功能,最终所有的参数都会自动定义到一个对象中 tags: - "CARD" summary: "查询所有Card" description: "Returns all Card" operationId: "ListCards" x-is-registered: 'N' x-support-sdk: 'N' x-mybatis-paging: true x-query-param-body: CardQo parameters: - name: "creator" in: "query" description: "creator" required: false type: "string" x-default-empty: true # 使用 x-default-empty 指定creator的默认值为 "" ----- 使用效果: 使用前: public class ListCardsQo implements Serializable { private static final long serialVersionUID = 1L; @JsonProperty("creator") private String creator = null; // 此处生成的creator默认值为 null ------} 使用后: public class CardQo implements Serializable { // 该示例使用了x-query-param-body指定了对象名为CardQo,所以和使用前的的示例中类名不一样 private static final long serialVersionUID = 1L; @JsonProperty("creator") private String creator = ""; //此处生成的creator的默认值为 "" -------}
  • 3、x-imports 作用: 自主定义类中需要添加的 import 引用。 标签值类型: List 使用位置: x-imports(当定义在swagger的最外层时,所有的类中都会引入import) components.schemas.model.properties.property.x-imports(当定义在dto的字段中时,只会在该dto类中引入import) definitions.model.x-imports(当定义在dto上时,只会在该dto类中引入import) paths.path.operation.x-imports(当定义在api中时,只会在该api中引入import) 在生成代码的时候,最终会有格式化的一个步骤,类上的无用import会被消除。 使用示例: swagger: "2.0"info: description: "" version: "v1" title: "testSwagger" termsOfService: "http://www.coarl.org/service.html"host: "git.huawei.com"basePath: "/testswagger"x-imports: - "org.springframework.stereotype.Controller;" # 使用的时候结尾一定要带上 ; - "org.springframework.transaction.annotation.Transactional;" 使用效果: 使用前:api类中不生成org.springframework.stereotype.Controller; 和org.springframework.transaction.annotation.Transactional;引用。 使用后:api类中生成如下引用。 import org.springframework.stereotype.Controller; # 通过x-import引入import org.springframework.transaction.annotation.Transactional; # 通过x-import引入public interface CARDApi { -------);
  • 18、x-interface-name-style 作用: 控制自定义接口、实现类命名风格。 标签值类型: enum(DEFAULT,SERVICE_IMPL_AND_NO_I_INTERFACE_PREFIX),配置为DEFAULT时和不配置此参数效果相同。 使用位置: x-interface-name-style 使用示例: swagger: "2.0"info: description: "" version: "v1" title: "testSwagger" termsOfService: "http://www.coarl.org/service.html"host: "git.huawei.com"basePath: "/testswagger"x-entity-package: "customdto"x-interface-name-style: SERVICE_IMPL_AND_NO_I_INTERFACE_PREFIX ------------ 使用效果: 使用前: service类的命名为 I+tag驼峰+ serviceeg: IOrderService 使用后: service类的命名为 tag驼峰+ serviceeg: OrderService
共99354条