• [技术干货] proxy 代理
    概念什么是同源策略同源策略是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。所谓同源是指:协议、域名、端口都相同什么是跨域跨域就是不同源,就是不满足协议、域名、端口都相同的约定如:看下面的链接是否与 http://www.test.com/index.html 同源?http://www.test.com/dir/login.html 同源https://www.test.com/index.html 不同源 协议不同(https)http://www.test.com:90/index.html 不同源 端口不同(90)http://www.demo.com/index.html 不同源 域名不同(demo)跨域请求devServer代理几种配置1:先在项目的根目录下新建 vue.config.js 文件2:在module.exports内设置devServer来处理代理假设我们要把http://localhost:8081/allin/policy/getProductInfo 中的域名换成 www.test.com 相当于把请求换成 http://www.test.com/allin/policy/getProductInfo第一种代理方式把请求的url写成/allin/policy/getProductInfo注意请求的地址必须是/allin/policy/getProductInfo,而不是http://localhost:8081/allin/policy/getProductInfo,(下面的几种方式也是同样的)因为代理会检查请求开头是否为/allin,如果以http开头,则检查不匹配,则不走代理 devServer: {    proxy: {        '/allin': {            //要访问的跨域的域名            target: 'http://www.test.com',            ws: true, // 是否启用websockets         //开启代理:在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样客户端端和服务端进行数据的交互就不会有跨域问题            changOrigin: true,        }    }}相当于遇见/allin才做代理,则会把默认域名http://localhost:8081地址改成 target 对应的http://www.test.com地址,但是在浏览器的F12下,Network->Headers中看到还是http://localhost:8081/allin/policy/getProductInfo, 但是真正的请求的地址则是http://www.test.com/allin/policy/getProductInfo注意如果只是修改域名,则不需要写pathRewrite,但如果要写,则必须写成pathRewrite: {’^/allin’: ‘/allin’},相当于把/allin标识还替换成/allin第二种代理方式把请求的url写成/api/allin/policy/getProductInfo devServer: {     proxy: {         '/api': {             //要访问的跨域的域名             target: 'http://www.test.com',             ws: true,             changOrigin: true,             pathRewrite: {                 '^/api': ''             }         }     } }相当于遇见/api才做代理,但真实的请求中没有/api,所以在pathRewrite中把’/api’去掉, 这样既有了标识, 又能在请求接口中把/api去掉第三种代理方式把请求的url写成/allin/getProductInfo注意这里请求时我没有写/polic,目的是在拦截跨域是我再加上devServer: {    proxy: {        '/allin': {            //要访问的跨域的api的域名            target: 'http://www.test.com',            ws: true,            changOrigin: true,            pathRewrite: {                '^/allin': '/allin/policy'            }        }    }}相当于遇见/allin则替换成/allin/policy,注意/policy后边没有/,这样拼接成功才会是http://www.test.com/allin/policy/getProductInfo第四种代理方式把请求的url写成/allin/getProductInfo注意这里请求时我没有写/polic,目的是在拦截跨域是我再加上devServer: {     proxy: {         '/allin': {             //要访问的跨域的api的域名             target: 'http://www.test.com/allin/policy',             ws: true,             changOrigin: true,             pathRewrite: {                 '^/allin': '/'  //必须这样写             }         }     } }这里/allin相当于http://www.test.com/allin/policy这里必须要写pathRewrite: { ‘^/allin’: ‘/’},而且里边必须要写成’^/allin’: ‘/’,这里的斜杠代表的意思就是使用target中的/allin/policy,否则就要使用上面的方式把斜杠写成/allin/policy,并把target中只写域名,如果不写pathRewrite则请求不会成功。注意pathRewrite:如果不写则只能修改代理的域名,如果写则可以修改代理的域名和后边的路径使用场景我们开发的Vue项目大部分是用在App内的,而当我们写好一个功能后,如果想在真机上看看效果,那必须要提交到测试环境,然后App内配置好测试地址才可以正常访问。那我们能不能直接让App访问我们自己的IP地址呢,这样的话当在真机上出现问题时,可以先修改,避免了把错误的代码提交到测试环境上,而我们如果直接这么写,肯定会报跨域的问题,这里就需要用到代理机制了。我们就按照上面的几种方式设置代理就可以让App访问我们自己的机器上的代码了
  • [活动体验] API中文文档上新,MindSpore邀您检视~
    issue:https://gitee.com/mindspore/mindspore/issues/I5DMBU?from=project-issuehttps://gitee.com/mindspore/mindspore/issues/I5ER7Lpr:https://gitee.com/mindspore/mindspore/pulls/36364https://gitee.com/mindspore/mindspore/pulls/36838邮箱:8714604@qq.com
  • [问题求助] 【M2241-QL产品】【Restful功能】API接口数据问题
    【功能模块】元数据订阅【操作步骤&问题现象】1、通过POST请求“元数据订阅”接口,响应码返回“1”,“一般错误”2、目标数据上报/车辆抓拍上报 接口结构化数据中“deviceID”、“width”、“height” 均为0,是正常的吗?【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [热门活动] 【开天aPaaS有奖征文】开发者集结!体验开天aPaaS平台,赢智能安防家庭套装(延期至8月24日)
    【摘要】 体验开天aPaaS平台,征集利用开天aPaaS集成工作台,调用API构建丰富应用相关的体验文章,赢智能家庭套装大奖。尊敬的各位博主,开天aPaaS平台现已升级完毕,重新开启免费体验申请,补偿活动时间15天,8.24截止。华为云开天aPaaS,是华为云与伙伴共建共享的行业经验聚合与开放平台。它将与伙伴联合沉淀的技术和解决方案等资产,进行标准化输出,做成“可被调用的API服务”,开放给行业开发者和客户调用,以实现经验即服务。在使能行业场景化创新的同时,达到与客户、开发者以及伙伴的合作共赢。面向开发者,开天aPaaS平台提供“可被调用的API服务”,提供一站式的开发框架和能力,让您可以快速集成各类应用,享受极致的开发和使用体验。为了让更多开发者了解开天aPaaS,使用开天aPaaS工作台,特举办《开发者集结,体验开天aPaaS工作台》征文活动。此次征文活动奖品丰厚,不仅有华为智选豪恩智能安防家庭套装、华为智选海雀智能摄像头,还有华为手环及华为定制礼品等,只要在社区博客发表与开天aPaaS平台相关的文章就可轻松获得。有点心动?看看详细规则吧:(投稿截止时间补偿到8.24)免费体验入口&操作指导【开天aPaaS工作台火热公测中】1-新手任务操作指导:利用模板创建流(申请公测这里要注意下,就是先进入申请公测的页面,提交信息后,刷新了进入开通工作台的界面,部分开发者会以为没申请成功,其实是正常的)【开天aPaaS工作台火热公测中】2-基础任务操作指导:使用连接器从零开始创建流【开天aPaaS工作台火热公测中】3-进阶任务操作指导:导入API并创建流我们需要哪些主题的稿件?原则上,我们欢迎所有能帮助学习开天aPaaS平台相关的文章!如基于自己的实际使用经验,分享对aPaaS的技术分析、使用感受及在项目实战中的经验等。如果你还不知道该怎么写,请你参看阅读下面1-3篇文章,可以让你更快上手(最终呈现效果类似这样):【愚公系列】手把手教你用搭一个WeLink上的出差应用丨【AppCube X WeLink双剑合璧】AppCube低代码快速开发健康打卡应用丨【AppCube X WeLink双剑合璧】人工智能之华为云ModelArts的深度使用体验与AI Gallery应用开发实践丨【华为云AI贺新年】你将获得什么?我们会把收到的优质内容汇编成册,并注明原作者,积累行业口碑,开放给圈内开发者下载查阅,提供实践参考。对于贡献优质内容的作者,我们还将送出各项大礼!同时,在华为云站内外10+个技术社区醒目位置进行推荐,给与百万级流量资源。优质作者更可获得长期约稿和更多内容合作机会。评奖规则说明华为云开发者社区、华为云开天aPaaS平台将联合评审此次征文。专家评分依据 :文章篇幅、技术含金量、排版美观度、阅读量、点赞、收藏等指标综合评分。其他说明 :1、一二三等奖不能叠加。2、一二三等奖可与创作小能手奖叠加。3、征文投稿数量不计入月度激励活动文章数量。在哪里投稿?文章需要发表在社区博客; 是时候展现真正的技术了, 点击前往发布标题以 【开天aPaaS大作战】结尾,例如:我用开天平台做了一个天气预报系统【开天aPaaS大作战】。文章末尾需加上活动名称及链接地址:【开天aPaaS大作战】有奖征文火热进行中:cid:link_7此外,在(cid:link_0)提出您的宝贵建议,标题以【云驻计划-定向征文】开头,还有机会赢取额外奖励。(此次活动文末加上面两句话,需要注意↑↑)文章跟华为云产品相关,所以需要同时加上【云端实践】标签如果大家在征文中遇到有关华为云产品体验方面的问题建议,请到【云声平台】提出您的宝贵建议,标题以【云驻计划-定向征文】开头,还有机会赢取额外奖励。有哪些需要注意的:1、文章内容需体现技术看点,图文并茂,建议字数在500字以上;2、文章要求为投稿人原创,凡转载或抄袭一经发现将取消参赛资格;3、文章须在华为云社区为首发,如华为云平台已有文章内容则视为稿件无效;4、稿件投稿后,华为云拥有该稿件的使用权、修改权等;5、因库存等原因,奖品可能会替换为等值礼品。快来华为云社区博客,一起遨游在技术的海洋中吧! 点击立即体验如果有任何问题,可扫描下方二维码咨询。添加微信时请备注:报名活动时使用的华为云昵称!扫码添加小助手:
  • [积分闯关赛] 【GDE直播公开课·第六期】GDE.API编排介绍及案例演示 观后感 +nukinsan
    直播链接:https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=182420    观后感:API 编排是云平台解决方案开放接口网关,面向API集成开放、定制开放、能力开放,使能SI/DSV/ISV基于OpenAPI进行系统集成、编排定制和业务创新。一站式、全在线、低门槛完成开放接口的调研、开发、测试、运维、治理。API 编排提供每个API的生态周期状态管理,存储API的生命周期历史状态,决策API配置资产管理导致的生命周期变更。API 编排支持DSF、HTTP协议接入的南向服务端网元的统一管理、配置,在API开发者进行API设计开发时,可以直接引用API 编排已管理的南向网元。API 编排提供API资产仓库功能,能够统一管理Open API相关的资产。API不仅仅是接口,API是一套完整的资产,以API为中心的一套资产包包括:API测试工具根据输入的API接口定义文件、测试用例及测试桩,自动化、在线化、可视化生成接口测试结果、成功率等,并且用户可使用API测试工具对测试用例进行有效的管理。可基于无码化、自动化生成测试用例,且支持场景化测试桩配置,同时可提升接口集成对接效率。典型场景下,套件基线开发、集成接口开发、套件定制开发团队之间均存在相互进行接口调用情况。在以上各接口的调用情况下,开发团队会遇到以下痛点,通过测试工具可以对各痛点逐个击破,有效提升接口集成调测效率。
  • [积分闯关赛] 【GDE直播公开课·第七期】低门槛AI开发模式:ModelFoundry观后感+y-wolfandy
    直播链接:https://bbs.huaweicloud.com/forum/thread-185456-1-1.html    观后感:API编排关键特性及应用场景API精准调研功能描述API编排调研工具承载了从客户调研阶段准确获取API接口元数据,接口码流报文的功能,为后续接口开发、测试提供完整的API信息输入。应用场景SA在进行现场接口调研时面临现网接口定义文档缺失,或有接口定义文档但内容年久失修,不准确的情况,使得SA在调研时工作量大,调研准确底低,无接口实例化数据等问题。API调研工具可根据真实现网的API报文和API定义文件,自动化校准并生成正常的API接口文档。API全在线开发功能描述API 编排是一款可在线化、脚本化、图形化开发方式的API开发工具,支持API提供者通过界面配置化、脚本化的方式开发API、降低技术门槛,提升开发效率。核心价值API 编排提供API编排功能,通过图形化、配置化、脚本化方式,实现单个API流程或多个API混合在线编排,使能DSV进行API的定制开放,集成开放和能力开放。应用场景在真实业务系统中,多数情况下北向和南向的协议不同,无法对接,使用API 编排工具进行南向和北向的协议转换,实现与第三方系统的快速对接、配对。API 编排r开放套件基线定制能力,提供图形化、脚本化的API定制、编排、沙箱环境、基线API等,支撑DSV/合作伙伴独立定制交付。
  • [积分闯关赛] 【GDE直播公开课·第六期】GDE.API编排介绍及案例演示观后感+y-wolfandy
      直播链接:https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=182420    观后感:什么是API编排?API 编排是云平台解决方案开放接口网关,面向API集成开放、定制开放、能力开放,使能SI/DSV/ISV基于OpenAPI进行系统集成、编排定制和业务创新。一站式、全在线、低门槛完成开放接口的调研、开发、测试、运维、治理。API编排优势API编排拥有如下优势,它让开发更简单:在线在开发平台一站式“调研 > 开发 > 测试”工具链中,支持全在线开发,目前操作平台涵盖了很多操作环境,后续也会根据用户使用情况,增加不同使用场景。极速API 编排具有多形式、多协议、多引擎、多编排,随心构建,更多扩展功能,不同场景编排样式多种多样,可满足大量使用场景。可视图形化操作,使用简单,即使是小白,也非常容易上手,操作界面非常人性化,界面简洁明了,一看即可上手。共享在API编排场景中,所有API资产可以全面复用和广泛共享,并支持多用户共享。API编排关键特性及应用场景API精准调研功能描述API编排调研工具承载了从客户调研阶段准确获取API接口元数据,接口码流报文的功能,为后续接口开发、测试提供完整的API信息输入。应用场景SA在进行现场接口调研时面临现网接口定义文档缺失,或有接口定义文档但内容年久失修,不准确的情况,使得SA在调研时工作量大,调研准确底低,无接口实例化数据等问题。API调研工具可根据真实现网的API报文和API定义文件,自动化校准并生成正常的API接口文档。
  • [基础知识] 【MindSpore易点通】API结构与使用方法
    简介:API文档是一个工具的使用说明书,所以想要学习一个工具就需要熟悉它的API,那么学习的难易程度会受到API文档的影响,本篇内容就和大家一起学习研究下MindSpore的API。API怎么理解?每个工具的官网都会投入很大精力来建设它的API部分,那么API是什么、有什么用呢?如果在网上直接搜索寻找答案,会得到如下比较专业的解释:API(Application Programming Interface,应用程序编程接口)API之主要目的是提供应用程序与开发人员以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。提供API所定义的功能的软件称作此API的实现。API是一种接口,故而是一种抽象。上面的解释专业但是笼统。结合到我们实际的应用:工具包可以想象成是某个服务大厅,每个API是一个窗口,不同的窗口能够办理不同的业务。我们只需根据需求走到对应窗口,提供姓名、身份证号给窗口,就能得到反馈。就是上述这样一个简单地逻辑,搞清楚了API、工具包和用户的关系。那么如果想要使用MindSpore,就需要先从它的API开始。 MindSpore的API结构在MindSpore官网的文档页面中,按照顺序API模块排在第三个,前面的设计和语法支持是MindSpore的灵魂,在设计模块中包括了整体结构的设计和独有的关键特性,参考模块中是MindSpore的基准性能和对网络、算子和语法的支持情况,非常建议大家能够仔细浏览下。虽然文档页面中有六个模块,但是内容占比最多的还是API模块,这是继设计和参考后的实际应用。API中内容很多,也很难都完全的记住,所以熟悉它的结构就能很快的查找到需要的借口,下面就分析下API的结构。API的结构顺序和模型训练的顺序也是对应的,这里再根据训练的顺序重新分类别。参数初始化:mindspore、mindspore.common.initializer这两个模块中提供了模型训练前的初始化设置接口,包括有数据类型、随机种子和运行环境等硬件参数,还有神经元参数的初始化。mindspore.communication:该模块是集合通信接口,用于分布式训练的设置中,支持Ascend和GPU硬件环境上使用,暂不支持CPU使用。数据处理:mindspore.dataset:该模块提供了加载和处理各种公共数据集的API,如MNIST、CIFAR-10、COCO、ImageNet、CLUE等, 同时支持加载业界标准格式的数据集,包括MindRecord、TFRecord、Manifest等。此外,用户还可以使用此模块定义和加载自己的数据集。mindspore.dataset.audio、mindspore.dataset.text、mindspore.dataset.vision:这三个模块分别是音频、文本和图像数据处理模块,主要包括数据的增强和预处理的方法。mindspore.dataset.config:该模块中用于设置或者获取数据处理的配置参数。mindspore.dataset.transforms:数据增强模块,适用于各种类型数据。mindspore.mindrecord:MindRecord是MindSpore开发的一种高效数据格式,该模块帮助用户将不同数据集转换为MindRecord格式。还可以通过相应的子模块将其他格式数据集转换为MindRecord格式数据集。网络构建:mindspore.nn、mindspore.nn.probability:这两个模块中提供了用于构建神经网络中的预定义构建块或计算单元,以及一些构造概率网络的高级组件。mindspore.numpy:这是接入的NumPy计算包,可以使用类NumPy语法进行模型构建,可用于Array生成、Array操作、逻辑运算和数学运算。mindspore.ops、mindspore.ops.functional:这两个模块开放给用户的最低阶算子接口,一个Primitive算子对应一个原语,它封装了底层的Ascend、GPU、AICPU、CPU等多种算子的具体实现。调试调优:mindspore.rewrite、mindspore.scipy、mindspore.boost:这三个模块实现了对节点的查看、对数据的计算和求解以及对网络的加速方法。 API的查询想要记住每一个接口的使用方法难度很大,所以我们得有快速的API查询方法。这里有两种方法。官网查询:这里有最准确详细的使用介绍:https://mindspore.cn/docs/zh-CN/master/index.html窗口查询:输入python -m pydoc -p 4567这里会自动跳转并打开网页,这里可以查询到我们所有安装的包,也可以并查看每个包详细的API。以下是MindSpore的查询页面。 总结本篇内容分析了MindSpore-API的结构,熟悉了结构更便于使用和查找,然后是常见的使用问题和解答。希望能够帮助大家更好的使用MindSpore。也欢迎大家多多反馈意见和建议,帮助建设MindSpore。谢谢大家浏览,欢迎留言讨论~
  • [热门活动] API中文文档上新,MindSpore邀您检视~
    API文档又上新啦!还记得3月份的中文文档检视活动,大家火眼金睛找出了很多问题,为MindSpore 贡献了一份力量。同时,4月的调查问卷中,很多用户表示当前中文文档不够用,希望更多文档能更新进来。这不,我们马不停蹄又更新了!参与过的小伙伴是不是熟悉的感觉又来啦!没参与过的小伙伴这次可别错过啦!奖品预览自选奖(5位)200元京东自营商品自选或MindSpore定制书包一个!激励奖(30位)活动时间6月20日——6月30日活动方式根据已给出的检视要点和待检视API表格,自行选择检视中文文档,对照英文版(检视要点和待检视API请从下方附件下载)。用户发现问题后,去MindSpore/mindspore仓提交Issue,并提交PR解决。Issue标题规范:【*问题接口名称*】【中文检视】简单描述用户自行汇总个人Issue和PR的链接,在MindSpore论坛“活动体验”版块发帖。Issue和PR数总计前5名用户获自选奖。Issue和PR数总计前30名获得激励奖(不包括自选奖获得者)。API地址:https://www.mindspore.cn/docs/zh-CN/r1.7/index.html(左上角搜索框可以快速搜索目标API)不知道如何提交issue或PR?看这里!***gitee上提交PR和issue的流程和注意事项*** 注意,提交PR后还要时时关注PR下方的评论意见,确保优先合入哦!本次PR负责人:无需指定,请按照issue标题规范提交即可。注意事项请勿刷帖,刷帖一律删帖并做无效参与处理。Issue和PR需经确认合格后方可计入总数。请勿盗取他人截图或内容,一经发现做无效参与处理。同一问题按issue提交时间确认优先级。*最终解释权归MindSpore团队所有。给MindSpore点赞!来个一键三连吧!gitee:https://gitee.com/mindspore/mindspore
  • [合作伙伴] 华为云云商店API展示规则(试行)
    华为云云商店API展示规则(试行)aPaaS服务产品部 & 云商店 1   目的      明确华为云云商店API服务的页面内容管理规则、广告位管理规则、审核机制等,以数据驱动运营效果的提升。2   适用范围      本规范适用于云商店API服务专区      页面链接:https://marketplace.huaweicloud.com/markets/apaas/api.html3   API专区页楼层内容管理      1、 API专区首页的楼层顺序及内容整体规划,由产品、运营、UED三方联合评审;       2、 商品内容会按月进行审视;      3、 API专区首页目前分为Banner&导航、豆腐块、0元试用、API排行榜、API推荐、优质服务商推荐和使用步骤等7个楼层:Banner&导航豆腐块0元试用API排行榜API推荐优质服务商推荐使用步骤 符合楼层定位的商品可申请展示;若因业务需要需修改或增加楼层,可发送需求至:fanqianglong@huawei.com    sunzhaoli1@huawei-partners.com3.1   Banner      Banner可配置5个轮播图,首个固定为API服务,其余4个可作为开放广告位申请。3.2   导航1、横向导航为华为云API保留;2、纵向导航按API分类展示,目前主要是综合API数量和订单详情,根据排名选取四个分类+数字营销分类来展示,每季度进行审视;3、每个分类内设有两个商品广告位, 商品选择规则为:一年内GMV最高的TOP2商品,且两个商品功能不相同,服务商不相同;优质服务商的商品优先(优质服务商评选规则见下文7)。可作为开放广告位申请。3.3   豆腐块1、展示商品选择规则为:综合商品一年内的GMV、客户数和订单量降序考虑,且提供0元套餐包;在上架API数排名第一的服务商的商品中,选择GMV最高的;从综合GMV排名TOP3的服务商中,选择其GMV最高的商品,若有重复则跳过。可作为开放广告位申请。3.4   0元试用1、分类页签数量没有限制,目前只展示三个,后续可根据需要增加新的分类页签;2、每个页签下有6个商品位, 展示规则为:商品提供0元套餐包;综合商品的GMV、客户数、订单量及伙伴API数量等排名考虑,降序排列;相同功能、相同服务商的商品不超过两个;可作为开放广告位申请3.5   API排行榜1、包含两类排行榜:热销API及新品API;2、展示规则:热销API:综合30天内的客户数、订单量和GMV等考虑;同一服务商或同一功能商品不超过两个;新品API:必须是30天内上架的API,综合客户数、订单量和API数量等考虑,最好有0元套餐包。3.6   API推荐1、展示规则:上面四个商品:在总API数量排行前四的分类标签中,根据GMV排名选择商品,若选中的商品已上热销榜,则往后顺延;下面四个商品:在其他分类标签中,根据GMV排名选择。8个商品中,同一服务商的商品不能超过2个;以联营联运商品、优质服务商的商品或特色API优先。可作为开放广告位申请3.7   优质服务商推荐1、推荐位分2组,1组10个(2行5列),点击换一换进入下一分组;2、展示规则:第一、二组的第一行:按照服务商商品总GMV降序排列,且API文档规范(抽检,总错误<3);第一、二组的第二行:按上架API数量降序排列,如有重复则跳过;可作为开放广告位申请4   API分类管理      现行方案:通过关键词搜索进行分类;      后续方案(评审中):      1、在云商店的商品分类中增加API      2、根据云商店现有商品情况及API市场竞品分析,增加API分类下的二级分类:           交通地理、智能识别、实名认证、生活服务、数字营销、企业管理      3、对二级分类里的商品进一步细分,通过添加标签的方式呈现5   广告位管理5.1   广告位分布5.1.1   云商店API分区广告位页面链接:https://marketplace.huaweicloud.com/markets/apaas/api.html广告位数量提供资料Banner轮播图4个商品链接、标题、50字内简介、图片(符合云商店视觉规范)豆腐块2个商品链接、标题、15字内简介分类商品推荐位每个分类2个商品链接0元试用每个分类6个商品链接、商品有0元套餐包API推荐每个分类8个商品链接、标题、50字内简介优质服务商推荐20个服务商链接5.1.2   云商店首页广告位页面链接:https://marketplace.huaweicloud.com/广告位数量提供资料0元试用4商品链接、试用规格(0元/x次)5.1.3   了解华为云-华为云开天aPaaS-行业API页面广告位页面链接:https://www.huaweicloud.com/about/apaas.html广告位数量提供资料商品位每个分类4个商品链接,申请分类 5.2   广告位申请规则5.2.1   广告位申请要求同一商品每月申请广告位数量不得超过3个;已经纳入排期的广告位,若本月放弃排期或因物料未提前准备导致逾期,取消本月至下个月的需求申请。若因故上线时间变更2次及以上,则取消本月需求申请。aPaaS运营方对申请商品的详情页、API接口文档等内容进行检查,若排期前未修复问题,则不可上线。5.2.2   广告位申请流程申请表请至附件下载 5.2.3   广告位变更及下线需求方可发邮件至sunzhaoli1@huawei-partners.com,说明广告位变更或下线的原因,aPaaS运营方在收到申请后的2个工作日内,进行广告位变更或下线。
  • [其他] 华为云发布15大创新服务 携手伙伴及开发者共创新价值
    本文分享自今日头条《华为云发布15大创新服务 携手伙伴及开发者共创新价值》,作者:华为云。【中国,深圳,2022年6月15日】今天,华为伙伴暨开发者大会隆重召开。在为期两天的大会上,华为云将带来主题演讲、论坛、专场等丰富活动,与伙伴、开发者、业界大咖、技术专家、高校师生共同探讨和分享基于云的深度创新和应用。会上,华为云CEO张平安发布15大创新服务,覆盖经验即服务、技术即服务和基础设施即服务;发布新的伙伴合作框架GoCloud和GrowCloud,帮助伙伴提升能力、扩大市场;华为ICT领域的顶级赛事“2022华为开发者大赛”也正式启动,让开发者能够一展身手,点亮无限创想。张平安在主题演讲中表示:“随着企业数字化转型的持续深耕,各行各业的SaaS渗透率在逐步增加,未来十年将是SaaS发展的黄金十年。华为云一直践行‘一切皆服务’,打造云上行业创新的最佳平台,加速SaaS进入千行百业。华为云将以不断创新的云服务,和伙伴及开发者一起,用创新点燃星星之火,照亮整个智能世界。”华为云CEO张平安发布15大创新服务经验即服务,让优秀得以复制去年,华为云发布开天aPaaS,将华为自身30多年及全球各行各业的数字化转型经验沉淀在华为云上,让开发者不必重复造轮子,快速实现行业SaaS创新,让优秀得以复制。在本届大会上,华为云重磅发布5个行业aPaaS服务。工业aPaaS:华为云发布数据模型驱动引擎DataModel Engine服务,沉淀了24种工业数据模型,让伙伴和开发者可以快速进行开发。湃睿科技基于华为云的数据模型驱动引擎,只用7个月就构建了SaaS化PDM,开发成本下降10倍。政务aPaaS:华为云基于600多个政务云项目,构建了政务aPaaS,沉淀了100多个政务服务API,让伙伴和开发者能够快速构建百花齐放的应用。在张家港,国泰新点基于华为云政务aPaaS的违规识别API,可对渣土违章行为实现分钟级定位、小时级处理。供热aPaaS:华为云供热aPaaS沉淀了98个智慧供热API服务,保障供热的精准和均衡,让每家每户在寒冷的冬天保持舒适的温度。在哈尔滨,北明软件联合华为云打造了智慧供热系统,服务13万户居民,实现供热精算精控,发挥每一份热的价值。煤矿aPaaS:华为云通过“盘古矿山大模型”,联合伙伴沉淀了18个机器视觉类矿山作业API,实现无人少人作业,让煤矿工人也可以“穿西装打领带”去工作,该方案可以在全国超过4000个井工矿复制使用。精英数智采用煤矿aPaaS的皮带异物识别API,异物识别精度超过98%,安全事故降低90%,避免了停工停产带来的巨大损失。教育aPaaS:华为云联合伙伴一起构建了5类30多个教育API服务,如智能作业批改、口语评测、智能排课等,帮助老师从低效重复的工作中解脱出来,专注于学生个性化能力培养。好未来基于华为云教育aPaaS的智能作业批改API,可将老师作文批改效率提升70%,同时也可以让学生快速获得优秀老师的经验建议。华为云携手各行业伙伴,在开天aPaaS上持续沉淀行业经验;同时,华为云在aPaaS上还沉淀了许多通用的基础能力。在本届大会,华为云还发布了2个基础aPaaS服务以及新的云商店。一站式富媒体消息服务KooMessage:能够提供全场景消息,包含服务号、智能消息、5G消息、Push消息等多种形式;并能触达300多款、5亿多台终端设备,包括手机、Pad、PC、智慧屏、智能手表等。唯品会在2022年春节的“不打烊抢红包”活动中,基于KooMessage定制开发了红包短信,实现个性化精准推送,点击率显著提升。使能数字孪生的云地图服务KooMap:联合伙伴可提供400多种地物分析API,可为智慧城市、自然资源监测、物流、出行等领域提供云地图服务。大势智慧与华为云KooMap合作,在中东地区利用城市三维建模API打造智慧城市数字孪生底座,相比传统线下建模的效率提升了3倍,让城市管理者能准确掌握每一寸土地的利用状态。华为云云商店KooGallery:从“丰富、品质、创新、共赢”四个维度全面提升,成为用户首选的企业应用平台。目前华为云云商店已经覆盖10多个行业、9大品类的7400多个商品,帮助伙伴商品快速变现。技术即服务,让创新触手可及去年,华为云发布了数字内容生产线MetaStudio、AI开发生产线ModelArts和软件开发生产线DevCloud,在本届大会上,华为云对这三大开发生产线进行服务升级,并发布全新的数据治理生产线DataArts。数据治理生产线DataArts:一站式实现从数据入湖、数据准备、数据质量、到数据应用等全流程的数据治理,同时融合智能化治理能力,帮助数据开发者大幅提升效率。帆软通过DataArts,将客户的经营报表生成时间从1周缩减到1小时;同时实现能耗数据可视化,使产线能耗大幅改善,每年可节省数千万人民币。AI开发生产线ModelArts:发布AI应用开发框架ModelBox,屏蔽掉底层软硬件的差异,实现了AI应用一次开发、全场景部署,将跨平台开发适配周期缩短80%,将推理性能提升2~10倍。在油气田巡检项目中,亮亮视野通过Modelbox将AI应用一键部署到AR眼镜、手机和机房服务器等多种设备上,帮助油气田快速实现对管线巡检的路线指引、设备故障识别等工作。数字内容生产线MetaStudio:发布数字人生成服务,仅需5秒钟就可根据用户上传的照片,生成自己专属的3D数字人;发布数字人直播服务,让用户无需专业的动作和面部捕捉设备,只需单摄像头就可实时驱动3D数字人,时延低于100ms;发布数字人视频制作服务,只需要输入文字,即可通过AI驱动制作出数字人讲解视频,使能数字人客服、课程讲解、新闻主持等场景的内容生产。软件开发生产线DevCloud:发布桌面IDE CodeArts,可以快速连接220多个华为云服务和4500多个华为云API,让开发更便捷;同时CodeArts提供了智能代码搜索和全量代码补全功能,让开发更高效;CodeArts还提供了开放的插件标准和插件市场,让生态更开放。基础设施即服务,让业务全球可达在基础设施即服务方面,华为云发布全球一张网KooVerse,给用户提供全球一致的业务体验。另外,基于KooVerse以及华为超过20年的海外本土运营经验,华为云为企业提供全球业务Boosting解决方案,助力企业全面开拓全球市场。同时,华为云通过智能边缘小站IES,让SaaS应用本地化部署,让伙伴既能享受公有云免运维的能力,又能够满足低时延、本地合规的诉求。用友基于华为云IES,实现了ERP SaaS的本地化部署,将部署实施周期由2~3个月缩短到2~3周,运维响应时间从天级缩短到分钟级。共创、共享、共赢云生态华为云一直秉承共创、共享、共赢的生态理念,聚合全球开发者,使能合作伙伴,协力解决客户数字化转型的痛点。目前华为云伙伴数量已超过38000家,开发者数量超过302万,伙伴在华为云云市场上架的应用数量已达7400多个。2022年,华为云将会以构建伙伴能力为核心,进行全面的伙伴体系变革。新的伙伴体系包括GoCloud和GrowCloud 2个合作框架。GoCloud目标是培育与发展伙伴能力,帮助伙伴在华为云构建丰富的解决方案与服务,为客户创造更多价值。GrowCloud的目标是帮助合作伙伴扩大客户覆盖,加速销售增长,实现商业共赢。华为云生态建设离不开广大开发者的参与。华为云作为智能世界的云底座,协同支撑鲲鹏、昇腾、鸿蒙、HMS等在内的开发者生态,今年计划在华为云上新增140多万各类开发者,赋能开发者500万人次。在本届大会上,主题为“创想无限”的2022华为开发者大赛正式启动。作为华为ICT领域的顶级赛事,华为开发者大赛开设云底座和产业两大赛道、覆盖全球6大赛区,总奖金额将高达500万人民币。大赛希望汇聚广大技术爱好者、企业伙伴和学生朋友,共创新价值。
  • [技术干货] API工具--Apifox和Postman对比(区别)
    ## 前言 Postman和Apifox有什么区别?他们之间分别有什么优势,感兴趣的同学可以继续往下看。 不吹不黑,只列功能,纯客观比对。 ## 一.功能列表对比 ### (一)接口设计与文档管理功能 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282565040530404.png) 1.导入功能对比 Apifox的导入功能除了支持OpenApi之外,还支持yapi,RAP2,postman等国内用得比较多的接口文档导入,而Postman支持的格式相对较少。 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282576741711183.png) ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282585176936279.png) 2.在线分享功能对比 Postman的在线分享功能,付费版支持“只读”功能,Apifox分享功能支持选择过期日期、设置密码,选择分享内容的范围,选择环境等功能。 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282596041219729.png) ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282605326923851.png) 3.编辑接口文档对比 接口文档既可以纯粹的MD格式文档对接口做整体说明,也可以在单个接口内部对单个接口进行说明注释。Apifox会增加创建时间、负责人、所属业务分组等业务和协同层面的注释信息。 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282614774579220.png) ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282622401738551.png) ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282631475197465.png) ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282640297691879.png) 4.生成代码功能对比 Postman支持将接口生成代码,postman支持的接口和框架为4种,Apifox支持130多种语言和框架 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282649937591303.4) ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282657274516776.png) 5.数据模型功能对比 在postman中没有这个功能,在Apifox中,由于本身具备接口设计的功能,因此会将实体类的相关参数封装成一个数据模型,供不同的接口调用,提高数据复用的效率,提高接口封装的程度,减少重复的工作。 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282667876270264.png) ### (二)接口调试功能对比 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282676280468705.png) 对比了下,Postman基本依赖于JS脚本,通过编写脚本对接口进行调试。 Apifox则是可视化调试界面为主,自定义脚本编辑为辅。 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282684951710175.png) ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282692278583614.png) ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282700429181459.png) ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282708291131952.png) 两者对比,在postman中需要写脚本才能实现的接口断言和提取变量、等待时间,在这里都能直接通过填写参数来完成、不需要写脚本。 而操作数据库这个功能postman则不支持。postman只支持js脚本,Apifox目前支持调用其他语言的外部函数和脚本,不过需要先安装相关的Python、java等环境。 ### (三)接口mock功能 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282717724329514.png) Postman也有mock功能,但它的mock服务需要自己搭建而且mock功能并不强。 在Postman上执行API mock 需要经过3步: 第一步:创建 mock服务器,获得mock url 第二步:逐个编写并添加 mock 示例,供执行mock时返回对应的接口响应 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282725490242234.png) 也就是说接口mock 出来的响应来源于先前调试已经有的,或者直接自己编辑一个响应进去,才能得到一个返回。 mock server 只能返回自己手动添加进去的几条响应,而无法自己无限制创建出mock 数据。 第三步: 将mock url 复制到接口里进行调试。 而想要在 Apifox 内做接口 mock 只需要在`环境`中选择mock服务 在响应参数中选择mock规则,点击发送请求,则mock服务会返回与实际业务返回高度相似的接口响应。 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282738275949352.png) ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282746608606303.png) ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282754904742773.png) ### (四)接口测试功能 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282765832339857.png) 在Postman里写测试脚本,使用动态参数,接口响应断言,参数传递都通过写脚本来实现。 如果要作业务接口测试,需要写各种场景下的用例,同样是通过写脚本来修改参数用例的执行顺序和设置循环次数的。使用postman至少需要掌握基础的js语言。 Apifox里面做自动化测试可视化程度相对较高一些,创建用例的时候可以在接口设计面板修改参数然后保存,场景用例可以添加不同的参数用例作为步骤,通过拖曳来选择用例的执行顺序。 右侧的面板可以填写循环次数,接口间的参数传递和断言也可以在可视化面板提取出来。完成单个接口测试或者场景测试,都不需要写代码。 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282780666517472.png) ## 二.团队协作功能 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282790439655374.png) Postman的团队协作功能是付费的,3人以下团队可使用免费版协作,3人以上根据可用功能和人数有不同的价格版本。 但通常一个团队不可能只有3个人,也就是说,有限开放的那点协同功能是无法支持正常的团队协作需求的。 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282798642373509.png) Apifox的协同功能是免费的,团队成员的权限管理,接口数据同步、在线分享都没有障碍。 本身Apifox的定位和Postman就不一样,它一出生就是定位在API管理和协作上。 所以除了协作功能必须的权限管理和数据同步上,它也最大程度地做数据复用,尽量减少不必要的工作量。 比如说接口调试的参数用例可以直接导入来做自动化测试,一个数据模型可以给多个接口使用,一套接口数据可以给后端做调试、前端做mock、测试做自动化。 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282806721395621.png) ## 三.Apifox 没有的功能 Postman支持fork GitHub上的代码,以及API 网关。这两块在Apifox上均没有相关的功能。 两个工具的功能有相同的地方,但本质上各自的市场定位还是不同的,Postman打通了接口调试、测试、到线上监测,代码生成。 而Apifox始终立身于前端、后端测试间基于接口的设计、调试、测试、文档管理等一系列接口的生命周期管理来发力。 在相同的功能点上,Apifox基于本土互联网团队的协作模式和痛点,基本做到了人无我有,人有我优 的程度。 因此如果基于各种原因,寻找Postman替代的开发们,不妨体验一下Apifox。 ## 四.产品价格 从收费模式上看,postman是基础功能不收费,协作功能收费;Apifox是公网版本不收费,私有化部署收费。 Apifox的SaaS版本也没有什么功能和团队人数的限制,对于我们常规的项目开发来说,免费版本就够用了。 公网的SaaS版本,数据的确是放在他们服务器上的,但这点Postman其实也一样,而且postman的服务器可是放在国外的。 如果大家的项目安全保密级别较高,想要做私有化部署,可以去他们官网咨询,这方面我没咨询过就不对比了。 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/15/1655282816062828538.png) ### 下载地址 **Apifox官网**:[www.apifox.cn](https://www.apifox.cn/?utm_source=liam)
  • [技术干货] 【HPDC】华为云发布15大创新服务 携手伙伴及开发者共创新价值
    原文链接:https://bbs.huaweicloud.com/blogs/359545【摘要】 6月15日,华为伙伴暨开发者大会隆重召开,华为云CEO张平安发布15大创新服务,覆盖经验即服务、技术即服务和基础设施即服务;发布新的伙伴合作框架GoCloud和GrowCloud,帮助伙伴提升能力、扩大市场;华为ICT领域的顶级赛事“2022华为开发者大赛”也正式启动,让开发者能够一展身手,点亮无限创想。6月15日,华为伙伴暨开发者大会隆重召开。在为期两天的大会上,华为云将带来主题演讲、论坛、专场等丰富活动,与伙伴、开发者、业界大咖、技术专家、高校师生共同探讨和分享基于云的深度创新和应用。会上,华为云CEO张平安发布15大创新服务,覆盖经验即服务、技术即服务和基础设施即服务;发布新的伙伴合作框架GoCloud和GrowCloud,帮助伙伴提升能力、扩大市场;华为ICT领域的顶级赛事“2022华为开发者大赛”也正式启动,让开发者能够一展身手,点亮无限创想。张平安在主题演讲中表示:“随着企业数字化转型的持续深耕,各行各业的SaaS渗透率在逐步增加,未来十年将是SaaS发展的黄金十年。华为云一直践行‘一切皆服务’,打造云上行业创新的最佳平台,加速SaaS进入千行百业。华为云将以不断创新的云服务,和伙伴及开发者一起,用创新点燃星星之火,照亮整个智能世界。”华为云CEO张平安发布15大创新服务经验即服务,让优秀得以复制去年,华为云发布开天aPaaS,将华为自身30多年及全球各行各业的数字化转型经验沉淀在华为云上,让开发者不必重复造轮子,快速实现行业SaaS创新,让优秀得以复制。在本届大会上,华为云重磅发布5个行业aPaaS服务。工业aPaaS:华为云发布数据模型驱动引擎DataModel Engine服务,沉淀了24种工业数据模型,让伙伴和开发者可以快速进行开发。湃睿科技基于华为云的数据模型驱动引擎,只用7个月就构建了SaaS化PDM,开发成本下降10倍。政务aPaaS:华为云基于600多个政务云项目,构建了政务aPaaS,沉淀了100多个政务服务API,让伙伴和开发者能够快速构建百花齐放的应用。在张家港,国泰新点基于华为云政务aPaaS的违规识别API,可对渣土违章行为实现分钟级定位、小时级处理。供热aPaaS:华为云供热aPaaS沉淀了98个智慧供热API服务,保障供热的精准和均衡,让每家每户在寒冷的冬天保持舒适的温度。在哈尔滨,北明软件联合华为云打造了智慧供热系统,服务13万户居民,实现供热精算精控,发挥每一份热的价值。煤矿aPaaS:华为云通过“盘古矿山大模型”,联合伙伴沉淀了18个机器视觉类矿山作业API,实现无人少人作业,让煤矿工人也可以“穿西装打领带”去工作,该方案可以在全国超过4000个井工矿复制使用。精英数智采用煤矿aPaaS的皮带异物识别API,异物识别精度超过98%,安全事故降低90%,避免了停工停产带来的巨大损失。教育aPaaS:华为云联合伙伴一起构建了5类30多个教育API服务,如智能作业批改、口语评测、智能排课等,帮助老师从低效重复的工作中解脱出来,专注于学生个性化能力培养。好未来基于华为云教育aPaaS的智能作业批改API,可将老师作文批改效率提升70%,同时也可以让学生快速获得优秀老师的经验建议。华为云携手各行业伙伴,在开天aPaaS上持续沉淀行业经验;同时,华为云在aPaaS上还沉淀了许多通用的基础能力。在本届大会,华为云还发布了2个基础aPaaS服务以及新的云商店。一站式富媒体消息服务KooMessage:能够提供全场景消息,包含服务号、智能消息、5G消息、Push消息等多种形式;并能触达300多款、5亿多台终端设备,包括手机、Pad、PC、智慧屏、智能手表等。唯品会在2022年春节的“不打烊抢红包”活动中,基于KooMessage定制开发了红包短信,实现个性化精准推送,点击率显著提升。使能数字孪生的云地图服务KooMap:联合伙伴可提供400多种地物分析API,可为智慧城市、自然资源监测、物流、出行等领域提供云地图服务。大势智慧与华为云KooMap合作,在中东地区利用城市三维建模API打造智慧城市数字孪生底座,相比传统线下建模的效率提升了3倍,让城市管理者能准确掌握每一寸土地的利用状态。华为云云商店KooGallery:从“丰富、品质、创新、共赢”四个维度全面提升,成为用户首选的企业应用平台。目前华为云云商店已经覆盖10多个行业、9大品类的7400多个商品,帮助伙伴商品快速变现。技术即服务,让创新触手可及去年,华为云发布了数字内容生产线MetaStudio、AI开发生产线ModelArts和软件开发生产线DevCloud,在本届大会上,华为云对这三大开发生产线进行服务升级,并发布全新的数据治理生产线DataArts。数据治理生产线DataArts:一站式实现从数据入湖、数据准备、数据质量、到数据应用等全流程的数据治理,同时融合智能化治理能力,帮助数据开发者大幅提升效率。帆软通过DataArts,将客户的经营报表生成时间从1周缩减到1小时;同时实现能耗数据可视化,使产线能耗大幅改善,每年可节省数千万人民币。AI开发生产线ModelArts:发布AI应用开发框架ModelBox,屏蔽掉底层软硬件的差异,实现了AI应用一次开发、全场景部署,将跨平台开发适配周期缩短80%,将推理性能提升2~10倍。在油气田巡检项目中,亮亮视野通过Modelbox将AI应用一键部署到AR眼镜、手机和机房服务器等多种设备上,帮助油气田快速实现对管线巡检的路线指引、设备故障识别等工作。数字内容生产线MetaStudio:发布数字人生成服务,仅需5秒钟就可根据用户上传的照片,生成自己专属的3D数字人;发布数字人直播服务,让用户无需专业的动作和面部捕捉设备,只需单摄像头就可实时驱动3D数字人,时延低于100ms;发布数字人视频制作服务,只需要输入文字,即可通过AI驱动制作出数字人讲解视频,使能数字人客服、课程讲解、新闻主持等场景的内容生产。软件开发生产线DevCloud:发布桌面IDE CodeArts,可以快速连接220多个华为云服务和4500多个华为云API,让开发更便捷;同时CodeArts提供了智能代码搜索和全量代码补全功能,让开发更高效;CodeArts还提供了开放的插件标准和插件市场,让生态更开放。基础设施即服务,让业务全球可达在基础设施即服务方面,华为云发布全球一张网KooVerse,给用户提供全球一致的业务体验。另外,基于KooVerse以及华为超过20年的海外本土运营经验,华为云为企业提供全球业务Boosting解决方案,助力企业全面开拓全球市场。同时,华为云通过智能边缘小站IES,让SaaS应用本地化部署,让伙伴既能享受公有云免运维的能力,又能够满足低时延、本地合规的诉求。用友基于华为云IES,实现了ERP SaaS的本地化部署,将部署实施周期由2~3个月缩短到2~3周,运维响应时间从天级缩短到分钟级。共创、共享、共赢云生态华为云一直秉承共创、共享、共赢的生态理念,聚合全球开发者,使能合作伙伴,协力解决客户数字化转型的痛点。目前华为云伙伴数量已超过38000家,开发者数量超过302万,伙伴在华为云云市场上架的应用数量已达7400多个。2022年,华为云将会以构建伙伴能力为核心,进行全面的伙伴体系变革。新的伙伴体系包括GoCloud和GrowCloud 2个合作框架。GoCloud目标是培育与发展伙伴能力,帮助伙伴在华为云构建丰富的解决方案与服务,为客户创造更多价值。GrowCloud的目标是帮助合作伙伴扩大客户覆盖,加速销售增长,实现商业共赢。华为云生态建设离不开广大开发者的参与。华为云作为智能世界的云底座,协同支撑鲲鹏、昇腾、鸿蒙、HMS等在内的开发者生态,今年计划在华为云上新增140多万各类开发者,赋能开发者500万人次。在本届大会上,主题为“创想无限”的2022华为开发者大赛正式启动。作为华为ICT领域的顶级赛事,华为开发者大赛开设云底座和产业两大赛道、覆盖全球6大赛区,总奖金额将高达500万人民币。大赛希望汇聚广大技术爱好者、企业伙伴和学生朋友,共创新价值。了解更多→→开天aPaaS经验即服务,让优秀得以复制
  • [基础知识] MindSpore易点通·精讲系列--数据集加载之CSVDataset
    # Dive Into MindSpore -- CSVDataset For Dataset Load > MindSpore精讲系列 -- 数据集加载之CSVDataset 本文开发环境 - Ubuntu 20.04 - Python 3.8 - MindSpore 1.7.0 本文内容摘要 - 先看API - 数据准备 - 两种试错 - 正确示例 - 本文总结 - 问题改进 - 本文参考 ## 1. 先看API 老传统,先看看官方文档: ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/14/1655201312251118069.png) **参数解读:** - dataset_files -- 数据集文件路径,可以单文件也可以是文件列表 - filed_delim -- 字段分割符,默认为"," - column_defaults -- 一个巨坑的参数,留待后面解读 - column_names -- 字段名,用于后续数据字段的key - num_paraller_workers -- 不再解释 - shuffle -- 是否打乱数据,三种选择[False, Shuffle.GLOBAL, Shuffle.FILES] - Shuffle.GLOBAL -- 混洗文件和文件中的数据,默认 - Shuffle.FILES -- 仅混洗文件 - num_shards -- 不再解释 - shard_id -- 不再解释 - cache -- 不再解释 ## 2. 数据准备 ### 2.1 数据下载 > 说明: > > 数据下载地址:[UCI Machine Learning Repository: Iris Data Set](https://archive.ics.uci.edu/ml/datasets/iris) 使用如下命令下载数据`iris.data`和`iris.names`到目标目录: ```shell mkdir iris && cd iris wget -c https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data wget -c https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.names ``` **备注:**如果受系统限制,无法使用`wget`命令,可以考虑用浏览器下载,下载地址见说明。 ### 2.2 数据简介 Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。数据集包含150个数据集,分为3类,每类50个数据,每个数据包含4个属性。可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。 更详细的介绍参见官方说明: ```shell 5. Number of Instances: 150 (50 in each of three classes) 6. Number of Attributes: 4 numeric, predictive attributes and the class 7. Attribute Information: 1. sepal length in cm 2. sepal width in cm 3. petal length in cm 4. petal width in cm 5. class: -- Iris Setosa -- Iris Versicolour -- Iris Virginica 8. Missing Attribute Values: None Summary Statistics: Min Max Mean SD Class Correlation sepal length: 4.3 7.9 5.84 0.83 0.7826 sepal width: 2.0 4.4 3.05 0.43 -0.4194 petal length: 1.0 6.9 3.76 1.76 0.9490 (high!) petal width: 0.1 2.5 1.20 0.76 0.9565 (high!) 9. Class Distribution: 33.3% for each of 3 classes. ``` ### 2.3 数据分配 > 这里对数据进行初步分配,分成训练集和测试集,分配比例为4:1。 相关处理代码如下: ```python from random import shuffle def preprocess_iris_data(iris_data_file, train_file, test_file, header=True): cls_0 = "Iris-setosa" cls_1 = "Iris-versicolor" cls_2 = "Iris-virginica" cls_0_samples = [] cls_1_samples = [] cls_2_samples = [] with open(iris_data_file, "r", encoding="UTF8") as fp: lines = fp.readlines() for line in lines: line = line.strip() if not line: continue if cls_0 in line: cls_0_samples.append(line) continue if cls_1 in line: cls_1_samples.append(line) continue if cls_2 in line: cls_2_samples.append(line) shuffle(cls_0_samples) shuffle(cls_1_samples) shuffle(cls_2_samples) print("number of class 0: {}".format(len(cls_0_samples)), flush=True) print("number of class 1: {}".format(len(cls_1_samples)), flush=True) print("number of class 2: {}".format(len(cls_2_samples)), flush=True) train_samples = cls_0_samples[:40] + cls_1_samples[:40] + cls_2_samples[:40] test_samples = cls_0_samples[40:] + cls_1_samples[40:] + cls_2_samples[40:] header_content = "Sepal.Length,Sepal.Width,Petal.Length,Petal.Width,Classes" with open(train_file, "w", encoding="UTF8") as fp: if header: fp.write("{}\n".format(header_content)) for sample in train_samples: fp.write("{}\n".format(sample)) with open(test_file, "w", encoding="UTF8") as fp: if header: fp.write("{}\n".format(header_content)) for sample in test_samples: fp.write("{}\n".format(sample)) def main(): iris_data_file = "{your_path}/iris/iris.data" iris_train_file = "{your_path}/iris/iris_train.csv" iris_test_file = "{your_path}/iris/iris_test.csv" preprocess_iris_data(iris_data_file, iris_train_file, iris_test_file) if __name__ == "__main__": main() ``` 将以上代码保存到`preprocess.py`文件,使用如下命令运行: > 注意修改相关数据文件路径 ```shell python3 preprocess.py ``` 输出内容如下: ```shell number of class 0: 50 number of class 1: 50 number of class 2: 50 ``` 同时在目标目录生成`iris_train.csv`和`iris_test.csv`文件,目录内容如下所示: ```shell . ├── iris.data ├── iris.names ├── iris_test.csv └── iris_train.csv ``` ## 3. 两种试错 下面通过几种**错误(带引号)**用法,来初步认识一下`CSVDataset`。 ### 3.1 column_defaults是哪样 首先,先来个简单加载,代码如下: > 为方便读者复现,这里将shuffle设置为False。 ```python from mindspore.dataset import CSVDataset def dataset_load(data_files): column_defaults = [float, float, float, float, str] column_names = ["Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width", "Classes"] dataset = CSVDataset( dataset_files=data_files, field_delim=",", column_defaults=column_defaults, column_names=column_names, num_samples=None, shuffle=False) data_iter = dataset.create_dict_iterator() item = None for data in data_iter: item = data break print("====== sample ======\n{}".format(item), flush=True) def main(): iris_train_file = "{your_path}/iris/iris_train.csv" dataset_load(data_files=iris_train_file) if __name__ == "__main__": main() ``` 将以上代码保存到`load.py`文件,运行命令: > 注意修改数据文件路径 ```shell python3 load.py ``` 纳尼,报错,来看看报错内容: ```shell Traceback (most recent call last): File "/Users/kaierlong/Documents/Codes/OpenI/Dive_Into_MindSpore/code/chapter_01/csv_dataset.py", line 107, in <module> main() File "/Users/kaierlong/Documents/Codes/OpenI/Dive_Into_MindSpore/code/chapter_01/csv_dataset.py", line 103, in main dataset_load(data_files=iris_train_file) File "/Users/kaierlong/Documents/Codes/OpenI/Dive_Into_MindSpore/code/chapter_01/csv_dataset.py", line 75, in dataset_load dataset = CSVDataset( File "/Users/kaierlong/Documents/PyEnv/env_ms_1.7.0/lib/python3.9/site-packages/mindspore/dataset/engine/validators.py", line 1634, in new_method raise TypeError("column type in column_defaults is invalid.") TypeError: column type in column_defaults is invalid. ``` 看看引发报错的源码,`mindspore/dataset/engine/validators.py` 中1634行,相关代码如下: ```python # check column_defaults column_defaults = param_dict.get('column_defaults') if column_defaults is not None: if not isinstance(column_defaults, list): raise TypeError("column_defaults should be type of list.") for item in column_defaults: if not isinstance(item, (str, int, float)): raise TypeError("column type in column_defaults is invalid.") ``` #### 3.1.1 报错分析 > 更多关于`column_defaults`参数的分析请参考`6.1`节。 还记得官方参数说明吗,不记得没关系,这里再列出来。 - **column_defaults** (list, 可选) - 指定每个数据列的数据类型,有效的类型包括float、int或string。默认值:None,不指定。如果未指定该参数,则所有列的数据类型将被视为string。 很显然,官方参数说明是数据类型,但是到`mindspore/dataset/engine/validators.py`代码里面,却检测的是数据实例类型。明确了这点,将代码: ```python column_defaults = [float, float, float, float, str] ``` 修改为: > 这里的数值取自`iris.names`文件,详情参考该文件。 ```python column_defaults = [5.84, 3.05, 3.76, 1.20, "Classes"] ``` 再次运行代码,再次报错: ```shell WARNING: Logging before InitGoogleLogging() is written to STDERR [ERROR] MD(13306,0x70000269b000,Python):2022-06-14-16:51:59.681.109 [mindspore/ccsrc/minddata/dataset/util/task_manager.cc:217] InterruptMaster] Task is terminated with err msg(more detail in info level log):Unexpected error. Invalid csv, csv file: /Users/kaierlong/Downloads/iris/iris_train.csv parse failed at line 1, type does not match. Line of code : 506 File : /Users/jenkins/agent-working-dir/workspace/Compile_CPU_X86_MacOS_PY39/mindspore/mindspore/ccsrc/minddata/dataset/engine/datasetops/source/csv_op.cc Traceback (most recent call last): File "/Users/kaierlong/Documents/Codes/OpenI/Dive_Into_MindSpore/code/chapter_01/csv_dataset.py", line 107, in <module> main() File "/Users/kaierlong/Documents/Codes/OpenI/Dive_Into_MindSpore/code/chapter_01/csv_dataset.py", line 103, in main dataset_load(data_files=iris_train_file) File "/Users/kaierlong/Documents/Codes/OpenI/Dive_Into_MindSpore/code/chapter_01/csv_dataset.py", line 90, in dataset_load for data in data_iter: File "/Users/kaierlong/Documents/PyEnv/env_ms_1.7.0/lib/python3.9/site-packages/mindspore/dataset/engine/iterators.py", line 147, in __next__ data = self._get_next() File "/Users/kaierlong/Documents/PyEnv/env_ms_1.7.0/lib/python3.9/site-packages/mindspore/dataset/engine/iterators.py", line 211, in _get_next raise err File "/Users/kaierlong/Documents/PyEnv/env_ms_1.7.0/lib/python3.9/site-packages/mindspore/dataset/engine/iterators.py", line 204, in _get_next return {k: self._transform_tensor(t) for k, t in self._iterator.GetNextAsMap().items()} RuntimeError: Unexpected error. Invalid csv, csv file: /Users/kaierlong/Downloads/iris/iris_train.csv parse failed at line 1, type does not match. Line of code : 506 File : /Users/jenkins/agent-working-dir/workspace/Compile_CPU_X86_MacOS_PY39/mindspore/mindspore/ccsrc/minddata/dataset/engine/datasetops/source/csv_op.cc ``` 好了,这个错误我们到`3.2`部分进行分析。 ### 3.2 header要不要 在`3.1`中,我们根据对报错源码的分析,明确了`column_defaults`的正确用法,但是依然存在一个错误。 #### 3.2.1 报错分析 根据报错信息,发现是`mindspore/ccsrc/minddata/dataset/engine/datasetops/source/csv_op.cc`中506行的报错,相关源码如下: ```c++ Status CsvOp::LoadFile(const std::string &file, int64_t start_offset, int64_t end_offset, int32_t worker_id) { CsvParser csv_parser(worker_id, jagged_rows_connector_.get(), field_delim_, column_default_list_, file); RETURN_IF_NOT_OK(csv_parser.InitCsvParser()); csv_parser.SetStartOffset(start_offset); csv_parser.SetEndOffset(end_offset); auto realpath = FileUtils::GetRealPath(file.c_str()); if (!realpath.has_value()) { MS_LOG(ERROR) << "Invalid file path, " << file << " does not exist."; RETURN_STATUS_UNEXPECTED("Invalid file path, " + file + " does not exist."); } std::ifstream ifs; ifs.open(realpath.value(), std::ifstream::in); if (!ifs.is_open()) { RETURN_STATUS_UNEXPECTED("Invalid file, failed to open " + file + ", the file is damaged or permission denied."); } if (column_name_list_.empty()) { std::string tmp; getline(ifs, tmp); } csv_parser.Reset(); try { while (ifs.good()) { // when ifstream reaches the end of file, the function get() return std::char_traits<char>::eof() // which is a 32-bit -1, it's not equal to the 8-bit -1 on Euler OS. So instead of char, we use // int to receive its return value. int chr = ifs.get(); int err = csv_parser.ProcessMessage(chr); if (err != 0) { // if error code is -2, the returned error is interrupted if (err == -2) return Status(kMDInterrupted); RETURN_STATUS_UNEXPECTED("Invalid file, failed to parse csv file: " + file + " at line " + std::to_string(csv_parser.GetTotalRows() + 1) + ". Error message: " + csv_parser.GetErrorMessage()); } } } catch (std::invalid_argument &ia) { std::string err_row = std::to_string(csv_parser.GetTotalRows() + 1); RETURN_STATUS_UNEXPECTED("Invalid csv, csv file: " + file + " parse failed at line " + err_row + ", type does not match."); } catch (std::out_of_range &oor) { std::string err_row = std::to_string(csv_parser.GetTotalRows() + 1); RETURN_STATUS_UNEXPECTED("Invalid csv, " + file + " parse failed at line " + err_row + " : value out of range."); } return Status::OK(); } ``` 通过阅读上面的源码,发现源码中没有处理`header`行的代码,即默认所有行都是数据行。还记得`2.3`中数据分配部分的代码,我们写入了`header`信息,而`CSVDataset`并不提供处理`header`行的能力。 现在根据报错分析定位,对`2.3`的数据分配代码进行修改,将代码 ```python preprocess_iris_data(iris_data_file, iris_train_file, iris_test_file) ``` 修改为 ```python preprocess_iris_data(iris_data_file, iris_train_file, iris_test_file, header=False) ``` 再次运行`preprocess.py`文件,生成新的数据。 然后运行`load.py`文件(这里并不需要再改代码),输出内容如下: > 说明: > > 1. 为方便读者查看,这里对格式进行了人为处理,内容不变。 > 2. 这里已经能够正确读取数据,数据包含5个字段。 > 3. 数据字段名已经根据指定的`column_names`做了处理。 ```shell ====== sample ====== {'Sepal.Length': Tensor(shape=[], dtype=Float32, value= 5.5), 'Sepal.Width': Tensor(shape=[], dtype=Float32, value= 4.2), 'Petal.Length': Tensor(shape=[], dtype=Float32, value= 1.4), 'Petal.Width': Tensor(shape=[], dtype=Float32, value= 0.2), 'Classes': Tensor(shape=[], dtype=String, value= 'Iris-setosa')} ``` ## 4. 正确示例 通过`3`中的两种试错,我们对`CSVDataset`有了初步认识,细心的读者可能会发现,`3`中依然有一个问题,那就是`Classes`字段没有进行数值化,下面我们就来介绍一种对其数值化的方法。 源码如下: ```python from mindspore.dataset import CSVDataset from mindspore.dataset.text import Lookup, Vocab def dataset_load(data_files): column_defaults = [5.84, 3.05, 3.76, 1.20, "Classes"] column_names = ["Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width", "Classes"] dataset = CSVDataset( dataset_files=data_files, field_delim=",", column_defaults=column_defaults, column_names=column_names, num_samples=None, shuffle=False) cls_to_id_dict = {"Iris-setosa": 0, "Iris-versicolor": 1, "Iris-virginica": 2} vocab = Vocab.from_dict(word_dict=cls_to_id_dict) lookup = Lookup(vocab) dataset = dataset.map(input_columns="Classes", operations=lookup) data_iter = dataset.create_dict_iterator() item = None for data in data_iter: item = data break print("====== sample ======\n{}".format(item), flush=True) def main(): iris_train_file = "{your_path}/iris/iris_train.csv" dataset_load(data_files=iris_train_file) if __name__ == "__main__": main() ``` 将以上代码保存到`load.py`文件,运行命令: > 注意修改数据文件路径 ```shell python3 load.py ``` 输出内容如下: > 说明: > > 1. 数据包含5个字段。 > 2. `Classes`字段已经根据`cls_to_id_dict = {"Iris-setosa": 0, "Iris-versicolor": 1, "Iris-virginica": 2}`进行了数值化转换。 > 3. 数值化转换用到了`mindspore.dataset.text`的有关方法,读者可以自行查阅,后续会出相关的解读文章。 ```shell ====== sample ====== {'Sepal.Length': Tensor(shape=[], dtype=Float32, value= 5.5), 'Sepal.Width': Tensor(shape=[], dtype=Float32, value= 4.2), 'Petal.Length': Tensor(shape=[], dtype=Float32, value= 1.4), 'Petal.Width': Tensor(shape=[], dtype=Float32, value= 0.2), 'Classes': Tensor(shape=[], dtype=Int32, value= 0)} ``` **后续:** - 这里还存在其他字段的数据归一化,就留待读者去尝试了。 - 数值化转换部分,也可以通过在数据分配部分增加代码来提前转换,读者也可以进行尝试。 ## 5. 本文总结 本文对`MindSpore`中的`CSVDataset`数据集接口进行了探索和示例展示。通过错误试探,发现目前`CSVDataset`的文档和功能还相对较弱,只能说是可用。 ## 6. 问题改进 ### 6.1 column_defaults文档错误 英文文档 ```shell column_defaults (list, optional) – List of default values for the CSV field (default=None). Each item in the list is either a valid type (float, int, or string). If this is not provided, treats all columns as string type. ``` 中文文档 ```shell column_defaults (list, 可选) - 指定每个数据列的数据类型,有效的类型包括float、int或string。默认值:None,不指定。如果未指定该参数,则所有列的数据类型将被视为string。 ``` 这里中文翻译有误。其实英文API就有一定的歧义性,前面说了是每个字段的默认值(CSV文件中存在字段为空的情况),后面又说如果为空,则按照`string`类型处理,让人分不清究竟是数据类型实例还是数据类型。 **注意:**其实这里既有数据类型实例的意思,又有数据类型的意思。当指定了`column_defaults`参数,则字段的默认值为`column_defaults`中相应位置的值,字段的类型为`column_defaults`相应位置值的数据类型。例如:某CSV文件包含三个字段,指定`column_defaults`为[2.0, 1, "x"],则读取该文件时,三个字段的类型会被识别为float、int、str,如果某行中第二个字段为空,则就用默认值1填充。 ### 6.2 不支持文件含有header > 如题 ### 6.3 不支持读取指定字段 > 如题,API层面不显式支持,不过可以通过后续的数据处理来支持。 ## 7. 本文参考 - [mindspore.dataset.CSVDataset](https://www.mindspore.cn/docs/zh-CN/r1.7/api_python/dataset/mindspore.dataset.CSVDataset.html#mindspore.dataset.CSVDataset) - [mindspore/ccsrc/minddata/dataset/engine/datasetops/source/csv_op.cc](https://gitee.com/mindspore/mindspore/blob/v1.7.0/mindspore/ccsrc/minddata/dataset/engine/datasetops/source/csv_op.cc) 本文为原创文章,版权归作者所有,未经授权不得转载!
  • [热门活动] [活动结束]【开天aPaaS分享有礼】讲体验、提建议,赢华为AI迷你音箱等好礼!
    如火如荼的开天aPaaS工作台公测体验活动还在继续已经体验过的你是不是有很多话要说?来!来!来!你的表扬、吐槽、建议,还有体验过程和感受,我们通通都欢迎!只要你愿意分享,我们就好礼相送~华为无线充电器、AI迷你音箱以及码豆任你拿!还没体验?赶紧戳链接 立即去体验体验完记得来分享哦~ 【活动形式】1. 云声平台提建议    怎样参与?    在云声平台提出您的宝贵建议,标题需带上“开天aPaaS”,关联产品/功能请选择“开天集成工作台MSSI”。建议发布后,将“链接”回复至本帖下方,即为参与本活动。    提哪些建议?    大家在开天aPaaS集成工作台的体验过程中,想要反馈哪些功能建议、用户体验或者产品缺陷等?2. 博客有奖征文    怎样参与?【有奖征文 第14期】开发者集结!体验开天aPaaS平台,赢智能安防家庭套装     征集内容:征集利用开天集成工作台,调用API构建丰富应用相关的体验文章【奖品设置】云声建议①优质建议奖:在所有有效建议中,选出5个被采纳的优质建议,分别获得下表奖励;②幸运大抽奖:在所有提出建议的参与者中,抽出5名幸运奖;③参与奖:所有提出建议的参与者,均可获得200码豆;P.S. 在云声平台上提建议,一定几率赢取额外奖励哦~名次要求奖励优质建议奖*5在所有有效建议中,选出5个被采纳的优质建议500码豆+AI迷你音箱幸运奖*5在所有提出建议的参与者中,抽取5名小天鹅音箱参与奖所有参与者(回复链接即视为参与)200码豆 注意:如库存礼品数量不够,则发放同等价值其他礼品【获奖名单】请几位获奖人在3个工作日内(最迟7月20日)私信@开天aPaaS小助手,提供收货信息,过期视为自动放弃;奖品将在本周统一发放【活动时间】    2022.06.15-2022.07.15【活动规则】1)建议标题需带有“开天aPaaS”字样及“开天集成工作台MSSI”标签;云声平台有2天预审时间,请注意提交的时间,及时刷新和回帖;2)本次活动不限制参与者的总建议数,但同一个问题/建议不可反复发布,否则只取首次提出者计为一次有效建议;如内容与开天aPaaS主题无关,或出现抄袭、洗稿风行为,均视为无效内容,一经发现将取消活动资格;3)  幸运抽奖和优质建议奖不可重叠;每位参与用户只能获奖一次,优先派发高价值奖品;4)建议分享后,开天aPaaS拥有该内容的使用权等;5)  本次活动,码豆预计于活动结束后1周左右完成发放,发放时间根据实际情况动态调整,如有延期敬请见谅;6)  活动结束且用户填写完成领奖信息后,30个工作日内发放奖品,发放时间根据实际情况动态调整,如有延期敬请见谅;7)  本次活动抽奖将采用巨公摇号平台(https://www.jugong.wang/random-portal/)进行抽取,如您对评奖方式有异议,请谨慎参加本次活动;8)  本次活动如一个实名认证对应多个账号,只有一个账号可领取奖励(举例说明:具备同一证件号(身份证号/护照ID/海外驾照ID/企业唯一识别号等)、同一手机号、同一设备、同一IP地址等,均视为同一实名用户);9)  本活动最终解释权归华为云开天aPaaS所有。活动总览-[活动总览]体验开天aPaaS集成工作台,挑战进阶任务赢华为手表![进行中]想了解更多活动信息?获得专属操作指导?可微信扫码添加华为云开天小姐姐哦 ~ 
总条数:968 到第
上滑加载中