-
Rest APIREST中定义工程对外提供的服务。HTTP动词:常用的HTTP动词如下(括号里是对应的SQL命令):GET(SELECT):从服务器取出一项或多项资源。POST(CREATE):在服务器新建一个资源。PUT(UPDATE):客户端提供改变后的完整资源,在服务器更新资源。PATCH(UPDATE):客户端提供改变的属性,在服务器更新资源。DELETE(DELETE):从服务器删除资源。资源路径:URL中不能有动词在Restful架构中,每个网址代表的是一种资源,所以网址中不能有动词,只能有名词,动词由HTTP的动作来表示。URL结尾不应该包含斜杠“/”正斜杠(/)不会增加语义值,且可能导致混淆。正斜杠分隔符“/”必须用来指示层级关系路径中的正斜杠“/“字符用于指示资源之间的层次关系。应该使用连字符“-”来提高URL的可读性,而不是使用下划线“_”一些文本查看器为了区分强调URL,会在URL下加上下划线。这样下划线”_”字符可能被文本查看器中默认的下划线部分地遮蔽或完全隐藏。为避免这种混淆,请使用连字符而不是下划线。URL路径中首选小写字母URL是对大小写敏感的,所以为了避免歧义,尽量用小写字符。补充说明:主机名(Host)和scheme对大小写是不敏感的。应该将API的版本号放入URL另一种做法是,将版本号放在HTTPS头信息中,但不如放入URL方便和直观。URL路径名词均为复数为了保证URL格式的一致性,建议使用复数形式。响应状态码200 | OK :用于一般性的成功返回。201 | Created [POST/PUT/PATCH]:用户新建或修改数据成功。202 | Accepted:用于Controller控制类资源异步处理的返回,仅表示请求已经收到。对于耗时比较久的处理,一般用异步处理来完成。204 | No Content:此状态可能会出现在PUT、POST、DELETE的请求中,一般表示资源存在,但消息体中不会返回任何资源相关的状态或信息。301 | Moved Permanently:资源的URI被转移,需要使用新的URI访问。302 | Found:不推荐使用,此代码在HTTP1.1协议中被303/307替代。目前对302的使用和最初HTTP1.0定义的语意是有出入的,应该只有在GET/HEAD方法下,客户端才能根据Location执行自动跳转,而目前的客户端基本上是不会判断原请求方法的,无条件的执行临时重定向。303 | See Other: 返回一个资源地址URI的引用,但不强制要求客户端获取该地址的状态(访问该地址)。304 | Not Modified:有一些类似于204状态,服务器端的资源与客户端最近访问的资源版本一致,并无修改,不返回资源消息体。可以用来降低服务端的压力。307 | Temporary Redirect: 目前URI不能提供当前请求的服务,临时性重定向到另外一个URI。在HTTP1.1中307是用来替代早期HTTP1.0中使用不当的302。400 | Bad Request:用于客户端一般性错误返回,在其它4xx错误以外的错误,也可以使用400,具体错误信息可以放在body中。401 | Unauthorized: 在访问一个需要验证的资源时,验证错误。403 | Forbidden:一般用于非验证性资源访问被禁止,例如对于某些客户端只开放部分API的访问权限,而另外一些API可能无法访问时,可以给予403状态。404 | Not Found:找不到URI对应的资源。405 | Method Not Allowed:HTTP的方法不支持,例如某些只读资源,可能不支持POST/DELETE。但405的响应header中必须声明该URI所支持的方法。406 | Not Acceptable:客户端所请求的资源数据格式类型不被支持,例如客户端请求数据格式为application/xml,但服务器端只支持application/json。409 | Conflict: 资源状态冲突,例如客户端尝试删除一个非空的Store资源。412 | Precondition Failed:用于有条件的操作不被满足时。415 | Unsupported Media Type:客户所支持的数据类型,服务端无法满足。500 | Internal Server Error:服务器端的接口错误,此错误于客户端无关。SDKSDK表示工程对应用编排提供的API,SDK没有暴露REST接口。BO之间调用,只能使用SDK。
-
> **摘要:** 通过结合华为云的人脸识别、functiongraph、OBS、APIG等云服务,来达成考勤打卡时调用一个API即可检测是否本人现场打卡的效果。 # 1 背景 使用APP进行打卡时,为避免非本人及非真人现场打卡的情况出现,想结合华为云的人脸识别能力,通过调用API,达成可检测是否本人且真人现场打卡的效果。 # 2 云服务介绍 **华为云FRS:** 人脸识别服务(Face Recognition Service),能够在图像中快速检测人脸、分析人脸关键点信息、获取人脸属性、实现人脸的精确比对和检索。该服务可应用于身份验证、电子考勤、客流分析等场景。[产品页面](https://www.huaweicloud.com/product/face.html) **华为云FunctionGraph:** 函数工作流(FunctionGraph)是一项基于事件驱动的函数托管计算服务。通过函数工作流,只需编写业务函数代码并设置运行的条件,无需配置和管理服务器等基础设施,函数以弹性、免运维、高可靠的方式运行。[产品页面](https://www.huaweicloud.com/product/functiongraph.html) **华为云APIG:** API网关(API Gateway)是为企业开发者及合作伙伴提供的高性能、高可用、高安全的API托管服务, 帮助企业轻松构建、管理和部署不同规模的API。简单、快速、低成本、低风险的实现内部系统集成、成熟业务能力开放及业务能力变现。[产品页面](https://www.huaweicloud.com/product/apig.html) **华为云OBS:** 对象存储服务(Object Storage Service,OBS)是一个基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力,使用时无需考虑容量限制,并且提供多种存储类型供选择,满足客户各类业务场景诉求。[产品页面](https://www.huaweicloud.com/product/obs.html) **华为云DNS:** 云解析服务(Domain Name Service)提供高可用,高扩展的权威DNS服务和DNS管理服务,把人们常用的域名或应用资源转换成用于计算机连接的IP地址,从而将最终用户路由到相应的应用资源上。此服务默认开通,免费使用。[产品页面](https://www.huaweicloud.com/product/dns.html) # 3 方案设计 ## 3.1 方案简述 通过APIG调用functiongraph函数,在functiongraph上完成人脸识别-活体检测、人脸识别-人脸比对等API的调用,并将响应结果通过API返回给APP。实现APP调用一次API即可完成人脸识别的功能。 1. 人脸识别服务的人脸比对功能,可实现检测是否其本人打卡。 2. 人脸识别服务的活体检测功能,可实现检测是否活人打卡。 3. 使用Functiongraph的函数,APP端只需考虑调用一个API,且只需考虑人脸识别的总体输入和返回结果。 4. Functiongraph由APIG来调用,利用APPkey、APPsecret及HTTPS,解决了APP端调用的安全认证等问题。 5. OBS桶用来存储人脸照片,通过约定的用户标识做文件存储路径,易于管理和使用。 ## 3.2 方案架构图  0. 初始化:前置准备工作,新建一个OBS桶做人脸库,将员工的人脸照片存放到人脸库,并把以user-id 或自定义字段作为路径,标识员工。 1. 员工登录APP后,进行人脸识别时,将通过APIG来调用functionGraph,上传关键信息:摄像头捕获的照片或视频、员工的人脸库标识(user-id)。 2. functionGraph调用活体检测API,传入照片/视频(根据需求选择动作活体检测/静默活体检测,推荐静默活体检测)。 *注:本方案采用静默活体检测方式,APP端上传的照片提前转换为base64格式* 3. 活体检测API返回响应:有confidence、picture(base64)。 4. 在functionGraph中调用OBS接口,通过user-id从OBS人脸库获取库中的员工照片。 5. 通过代码将从OBS获取的照片文件,转换为base64格式。 6. 将两个base64格式的照片作为输入参数调用人脸比对API 。(备注:此处可根据需求,是否需要多次调用API,使用多个照片进行验证) 7. 人脸比对API返回包含了similarity的响应。 8. functionGraph将similarity、confidence传回给APP/后端。(备注:也可直接在functionGraph完成判定,返回人脸识别结果) ## 3.3 FUNCTIONGRAPH实现代码 代码详看附件。 代码时序图:  # 4 方案部署 ## 4.1 部署流程图  ## 4.2 前置准备 1. 拥有已实名认证的华为云账号,开通云服务functiongraph、人脸比对、活体检测、OBS 2. 注册公网域名,完成ICP备案 ## 4.3 创建OBS人脸库 ### 4.3.1 创建OBS桶 参考帮助文档:https://support.huaweicloud.com/qs-obs/obs_qs_0007.html ,**创建私有桶** ### 4.3.2 上传对象 参考帮助文档: https://support.huaweicloud.com/qs-obs/obs_qs_0008.html ,上传对象,建立OBS人脸库。 要求:文件的路径使用用户标识(如userid)命名  ## 4.4 FUNCTIONGRAPH搭建 ### 4.4.1 创建委托 登录IAM控制台(https://console.huaweicloud.com/iam/?region=cn-north-4#/iam/agencies) 1)创建委托  委托名称:自定义 委托类型:云服务 云服务:函数工作流functiongraph 持续时间:永久  2)选择策略 OBS:获取对象等基本操作权限 FRS:fullaccess APIG:fullaccess  3)设置最小授权范围,此处选择所有,实际可根据项目情况分配。  4)完成委托创建  ### 4.4.2 上传FRS依赖包 因functiongraph公共的依赖包中,FRS-SDK不是最新的(无静默活体检测API),故我们需上传最新的FRS-SDK,作为依赖包。 1)从官网获取FRS-SDK下载路径 https://sdkcenter.developer.huaweicloud.com/?language=python 2)下载整个Python-v3的SDK https://github.com/huaweicloud/huaweicloud-sdk-python-v3 下载后解压,进入内部,找到frs后缀的SDK 进入SDK目录,在setup所在的目录,全部选择进行压缩。压缩成功后,需要确保setup文件在压缩包的根目录下。  将压缩好的文件,上传到**functiongraph**的**依赖包管理**。  依赖包名称:自定义 运行时语言:2.7 描述:自定义 上传方式:上传ZIP文件  ### 4.4.3 创建函数 1)进入functiongraph控制台创建函数。 Functiongraph版本:functiongraph v2 函数类型:事件函数 函数名称:自定义 所属应用:默认 委托名称:选择创建的委托(如无,请点击右边的 创建委托 前往创建,创建步骤参考4.4.1) 企业项目:自行选择 自定义函数:关闭 运行时语言:Python2.7 函数执行入口:Index.handler 代码上传方式:静默代码   ### 4.4.4 编辑函数代码 将示例代码复制进来,编辑相关默认变量的值 1)粘贴3.3节的代码至index.py中  2)根据自己项目情况,设置默认Region、endpoint、buketname的值,若4.4.6节不设置环境变量的值,将默认取此处的默认值。 如下默认是北京四  3)编辑完成后,点击保存  ### 4.4.5 添加依赖包 1)在函数菜单-代码页,点击添加-依赖代码包  2)在公共依赖包,搜索obs,勾选OBS-sdk  3)在私有依赖包,勾选前面步骤上传的frs-sdk,然后确定保存  ### 4.4.6 编辑环境变量 在函数菜单-配置页,添加环境变量:region、bucketname(OBS桶名)、endpoint 若此处不设置环境变量,则函数会使用4.4.4节代码设置的默认值。  ### 4.4.7 调试函数 1)点击配置测试事件  2)选择apig的事件模板,添加body的内容和queryStringParameters的userid,进行保存。  3)点击测试,运行完毕可查看执行结果。  ## 4.5 添加APIG ### 4.5.1 添加APIG触发器 1)在函数菜单-触发器页,点击创建触发器  触发器类型:API网关服务(APIG) API名称:自定义 分组:选择API分组(如无点击右边 创建分组 进行创建) 发布环境:RELEASE(如无点击右边 创建发布环境 进行创建) 安全认证:测试环境可选择None(后面可编辑进行更改) 请求协议:测试环境可选择HTTP(后面可编辑进行更改) 后端超时(毫秒):5000  2)创建完成后,在触发器页面会添加一个APIG触发器,提供访问URL  ### 4.5.2 编辑APIG 1)点击APIG触发器名称,前往APIG控制台,点击编辑  2)编辑基本信息 此处可更改安全认证,为方便调试,此处保持无认证  3)定义API请求 此处需添加API的请求参数-用户标识,用于functiongraph中,取在OBS人脸照片库中的员工照片。  4)定义后端服务 添加后端服务参数,跟前面的入参做一个映射。 因为是在functiongraph创建的APIG,故此处已自动绑定functiongraph的函数为后端服务,故基础定义保持默认即可。  5)返回结果基础定义 返回结果的响应示例,暂设置为空即可,点击完成。  ### 4.5.3 调试API 1)API详情页,点击调试,跳转到API调试页面  2)输入相关请求参数,发起请求,进行调试。  ### 4.5.4 发布API 编辑完成后的API,需要进行发布,公网才可访问   ## 4.6 绑定独立域名 子域名仅供开发测试使用,每天最多访问1000次。如需开发服务,则需为API所在分组绑定独立域名。 ### 4.6.1 添加记录集 1、登录云解析控制台(也可使用其他平台,已完成ICP备案的域名),选择域名解析》公网域名,点击需要创建记录集的域名名称。  2、添加记录集  填写以下信息 主机记录:域名前缀,如face-test 类型:选择CNAME – 将域名指向另外一个域名 别名:默认即可 线路类型:默认即可 TTL(秒):默认即可 值:填写要指向的别名(此处为APIG上的子域名)  添加成功   ### 4.6.2 添加自定义域名 1、在API详情页-总览,点击添加增加自定义域名。  2、跳转到API所在分组的域名管理控制台,点击绑定独立域名  3、输入前面创建的记录集,点击确定。(如果是刚添加的记录集需刷新,约等5分钟)  添加完后,即可在公网通过自定义域名,访问APIG。  ## 4.7 问题记录 1、并发测试API时,发现偶现以下错误 错误1:人脸比对传入的base64字符串无法识别  错误2:数据传输被提前终止了  问题定位:因函数中的存储到本地的文件用的是同一个路径,并发操作时出现异步的同时占用一个路径,从而导致文件有丢失或文件转码有误 解决方案:给函数中的文件路径配置上时间戳,避免并发操作时,交叉操作同一个文件。 2、APIG错误码请参考: https://support.huaweicloud.com/usermanual-apig/apig-ug-180530090.html 3、使用APIG触发functiongraph时,发现第一个api请求响应时间较长(2s多),后面的请求就较短了(约500ms)。 问题定位:超过一分钟无调用函数时,函数会销毁。再次进行函数调用时,需要重新启动实例,所以第一次调用时间会比较长。 解决方案:设置预留实例,来消除冷启动效果。预留实例是为指定函数版本单独预留的函数运行实例,不同于普通的函数实例,预留实例长期存活,可以达到消除函数冷启动的效果。 预留实例需要提交工单开通,详情请参考:https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0306.html # 5 后期思考 1、 本方案的人脸比对,只比对一次。若人脸库中,用户的库照片有多个,是否需要遍历对比,取总体对比的结果。如对比多次,需要考虑从OBS获取照片、人脸比对的API要多次调用,性能下降、费用提升等
-
资产API符合RESTful API的设计理论。请使用前仔细阅读以下API规格介绍,如无特殊说明,本文中所有资产中包含的API均遵守以下约定。由于AppCube平台的限制,单次查询传入的limit需要小于等于5000;当业务需要的查询数量大于5000时,请分批多次调用该接口。REST API介绍REST从资源的角度来观察整个网络,提供创建、查询、更新、删除等方法访问服务的资源。REST API请求/响应可以分为如下部分:请求URI请求消息头请求消息体响应消息头响应消息体请求URI请求URI由如下部分组成:{URI-scheme}://{Endpoint}/{resource-path}?{query-string}尽管请求URI包含在请求消息头中,但大多数语言或框架都要求您从请求消息中单独传递它,所以在此单独强调。表1 请求URI说明参数描述URI-scheme表示用于传输请求的协议。Endpoint指定承载REST服务端点的服务器域名。resource-path资源路径,也即API访问路径。从具体接口的URI模块获取,例如“/service/v1.0/buddleOfferings.get”。query-string可选参数,例如API版本或资源选择标准。请求方法HTTP方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。表2 请求方法说明方法说明GET请求服务器返回指定资源。PUT请求服务器更新指定资源。POST请求服务器新增资源或执行特殊操作。DELETE请求服务器删除指定资源,如删除对象等。请求消息头可选的附加请求头字段,如指定的URI和HTTP方法所要求的字段。详细的公共请求消息头字段请参见表3。表3 请求消息头说明名称描述是否必选示例Content-Type发送的实体的MIME类型。推荐用户默认使用application/json,如果API是对象、镜像上传等接口,媒体类型可按照流类型的不同进行确定。是业务接口取值:application/json获取access-token接口取值:application/x-www-form-urlencodedContent-Length请求body长度,单位为Byte。否3495access-token当用户通过用户密码或者AK、SK在系统鉴权成功后,后台会生成一个token。下次接口请求时,在请求消息头中带上这个access-token,表示这个用户已经被鉴权过。获取token请参考获取access-token接口。否00000000***a8fcfd450请求消息体该部分可选。请求消息体通常以结构化格式(如JSON或XML)发出,与请求消息头中Content-Type对应,传递除请求消息头之外的内容。若请求消息体中的参数支持中文,则中文字符必须为UTF-8编码。响应消息头响应消息头包含如下两部分:一个HTTP状态代码,从2xx成功代码到4xx或5xx错误代码,或者可以返回服务定义的状态码。附加响应头字段,如Content-Type响应消息头。详细的公共响应消息头字段请参考表4 响应消息头。表4 响应消息头名称描述示例Content-Length响应消息体的字节长度,单位为Byte。--Date系统响应的GMT时间。Wed,27 Dec 2016 06:49:46 GMTContent-Type响应消息体的MIME类型。application/json响应消息体该部分可选。响应消息体通常以结构化格式(如JSON或XML)返回,与响应消息头中Content-Type对应,传递除响应消息头之外的内容。发送请求您可以使用多种方式进行资产接口调试:cURLcURL是一个命令行工具,用来执行各种URL操作和信息传输。cURL充当的是HTTP客户端,可以发送HTTP请求给服务端,并接收响应消息。编码通过编码调用接口,组装请求消息,并发送处理请求消息。REST客户端可以使用浏览器插件,发送处理请求消息。例如Postman。字符和字节的换算方法接口中参数的长度说明,一般都是以字节为单位。对于AppCube平台,字符与字节的换算关系如下:1个英文字符占1个字节1个中文字符占3个字节
-
dec有资源专属云和全栈专属云fcs,他俩得api是不是跟公有云一样得。我理解资源专属云就是给客户单独一个region或者可用区纳管在huaweicloud,全栈专属云就是hcso,单独得一套类公有云平台。
-
没错!开天工作台公测啦!什么是开天集成工作台>>开天集成工作台免费体验集成工作台>>立即开通怎样使用集成工作台>>用户指南“手动触发流”与“自动化流”有什么区别?简单来说,前者靠人工手动触发,需要每次手动点击“运行”来触发;后者由系统自动触发,需要设置自动运行的时间周期、重复方式等参数,系统会按照计划反复运营,直至点击“关闭”。操作步骤一、手动触发流此处以“发送天气预报短信”为例:选择“手动触发流”,增加参数;定义设为“手机号码”,填写默认值;其他触发事件。例如,华为会议的触发事件是创建周期会议:用友的触发事件是查询料品:二、自动化流此处以“计划”连接器为例:创建流:选择“计划”,定义首次运行时间、重复方式和重复周期;运行流:自动化流“运行”后,会根据设置的参数自动运行;结束流:点击“关闭”,流运行停止。其他推荐【开天工作台入门指导】01-如何利用模板创建一个自动化流【开天工作台入门指导】02-从创建连接器开始完成从空白创建流
-
没错!开天工作台公测啦!什么是开天集成工作台>>开天集成工作台免费体验集成工作台>>立即开通怎样使用集成工作台>>用户指南操作指导让我们以导入“最美天气”API为例,从0开始创建一个天气预报短信通知的流。总共要分三步:创建连接器→创建连接→创建流(如下图所示)前期准备天气预报API cid:link_1操作步骤一、创建连接器进入集成工作台的控制页面,“连接器管理”→“我的连接器”,选择“从空白创建”或者也可通过导入OpenAPI创建我们选择“从空白创建”,填写连接器的基本信息、名称、描述等信息。①根据API调用地址,域名填写zmexp.apistore.huaweicloud.com就可以了②url前缀可以不填据根据我们获取的API的调用地址,选择https协议,填写域名信息,点击“下一步”认证方式选择“AK/SK”,这个是由API的认证鉴权方式决定的,这两个参数我们在后面创建连接的地方再填,点击“下一步”进入到连接器自定义内容页面,包括执行动作和触发事件。①点击添加动作:执行动作ID可以自己定义,填forecast8days;摘要、说明帮助使用者了解该动作用途,比如查询最近8天天气数据。②API的请求方式,选择 GET③URL是调用地址的后半段,填/bestWeather/ty/forecast8days④因为这个API的请求参数只有query,所以主体和标题都不变⑤选择查询路径,点击新增query⑥这里有lat和lon两个参数需要填写,新增两次query,可按照下表填写,点击“完成”latlon名称latlon说明可不填,纬度可不填,经度摘要可不填,纬度可不填,经度默认值不填不填别名纬度经度可见性none,可见none,可见类型StringString格式InputInput配置相应。我们提前准备了API的正常返回示例,根据返回示例的层级结构,配置响应的内容;根据返回示例,填好参数,点击“创建连接器”。连接器创建完成,可在“连接器管理”→“我的连接器”处查看二、创建连接在“连接器管理”→“连接”界面点击“创建连接”搜索刚才创建的“最美天气”连接器;刚才已经选过AK/SK认证了,输入AK、SK,点击“创建”三、进行流编排-发送短信预报天气情况创建流,修改名称;我们这次选择手动触发流添加执行动作,在“连接器”→“自定义”中找到刚才创建的“最美天气”连接器。填写参数输入提前准备好的地点经纬度(例:深圳市龙岗区 维度22.6593,经度114.0678)继续添加执行动作,选择“短信”;填写收件人,根据API返回参数的释义,选择我们需要的参数,配置好点击“保存”,完成流的创建;在“流管理”→“我的流”界面找到刚刚创建的流,点击“运行”查看流运行结果其他推荐【开天工作台入门指导】01-如何利用模板创建一个自动化流【开天工作台入门指导】03-手动触发流与自动化流的区别
-
没错!开天工作台公测啦!什么是开天集成工作台>>开天集成工作台免费体验集成工作台>>立即开通怎样使用集成工作台>>用户指南操作步骤1. 进入集成工作台的控制页面找到左侧目录的“流管理”,在“我的流”可以直接创建,或是从模板创建流2. 选择与业务场景相近的模板,点击“创建流”3. 修改流名称,改为“天气预报短信通知”4. 设置参数设置“重复执行”的参数:这个流是根据时间触发的,点击“重复执行”,在右边的弹框中设置“首次运行时间”和“重复周期”设置“近三天天气”的参数:在下拉列表中选择城市,或者自定义查找设置“近三天空气质量”的参数:在下拉列表中选择城市,或者自定义查找设置“发送短信”的参数:填写“收件人”(手机号)及“短信内容”,可使用已编辑好的模板,也可在左侧下拉列表中选择其他内容项 5. 整个流的内容编辑完后,保存6. 回到“流管理”-“我的流”列表,找到刚编辑好的流,点击“开启”;到了设定好的x点它就会自动执行,给我们发送短信。7. 运行效果,收到定时发送的天气预报短信其他推荐【开天工作台入门指导】02-从创建连接器开始完成从空白创建流【开天工作台入门指导】03-手动触发流与自动化流的区别
-
【问题来源】星网【问题简要】现网使用的IPCC espace CC V200R001C50SPC100解决方案的CC-gateway,前端坐席是通过JavaScript API 进行开发的,CC-gateway升级到AICC8.15.1spc4 后无法调用;【问题类别】CC-gateway【AICC解决方案版本】 【AICC可选择版本: AICC8.15.1spc4】 【UAP可选择版本:UAP9600 V100R005C00SPC100】 【CTI可选择版本:ICD V300R008C23SPC006】【期望解决时间】本周【问题现象描述】AICC8.15.1spc4 没有找到 http://Agent Server IP地址:8000/agentgateway/resource-js下面是现网使用的调用方式,目前疑问是想知道AICC8.15.1spc4 是否还保留了这种模式,如果有保留,应如何进行修改CC-gateway配置。【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
#### 写在前面 用云的小伙伴一般对region、AZ比较熟悉,华为云Stack ManageOne 运营又增加了VDC和资源集的概念,该如何理解呢? #### 理解 - REGION 一般都是跨地域的,不在同一个物理位置。例如:华为云、电信云等应该具备多个region,满足不同区域不同业务类型的客户。华为云就有华北、华东、乌兰察布等。 - VDC Virtual Data Center,虚拟数据中心是一个管理层面的概念,一般可以理解是一个组织会有一个VDC。例如一个公司他的业务遍布全国,可以在华为云上注册一个账号,这个账号就是一个1级VDC,这个VDC可以使用所有region的资源(前提是有配额)。HCS就是一个组织架构比较大的企业也可以自建云之后,对陕西子公司开一个属于它们的VDC,广东也有自己的VDC。 - 资源集(project) 资源集,顾名思义资源的集合,主要是针对资源进行配额管理、约束的。不同的资源集可以有不同的服务、实际在使用中可能会有切换region的错觉。 一张丑陋的理解图:  #### 资源集和服务构建器 服务构建器目前主要包含2中编排:资源类型和API类型。 - 资源类型 资源类型包含依赖资源集的资源,例如VPC、子网等,这些资源或者参数只有在资源集确定的情况下才能被创建或者是选择。 所以带来的一个问题是:如果一个服务上架到确定的资源集,就不能在其他资源集申请。 - API类型 API编排主要依赖在服务提供者里面注册的API,而API是和VDC有关,和资源集里面的资源没有关系的,所以我们上架的服务在任何一个资源集上都是可以申请的
-
在学习RESTful 风格接口之前,即使你不知道它是什么,但你肯定会好奇它能解决什么问题?有什么应用场景?听完下面描述我想你就会明白:随着互联网和移动设备的发展,人们对Web应用的使用需求也增加,传统的动态页面由于低效率而渐渐被HTML+JavaScript(Ajax)的前后端分离所取代,并且安卓、IOS、小程序等形式客户端层出不穷,客户端的种类出现多元化,而客户端和服务端就需要接口进行通信,但接口的规范性就又成了一个问题: 所以一套结构清晰、符合标准、易于理解、扩展方便让大部分人都能够理解接受的接口风格就显得越来越重要,而RESTful风格的接口(RESTful API)刚好有以上特点,就逐渐被实践应用而变得流行起来。现在,RESTful是目前最流行的接口设计规范,在很多公司有着广泛的应用,其中Github 的API设计就是很标准的RESTful API,你可以参考学习。在开发实践中我们很多人可能还是使用传统API进行请求交互,很多人其实并不特别了解RESTful API,对RESTful API的认知可能会停留在:面向资源类型的是一种风格(误区)接口传递参数使用斜杠(/)分割而不用问号(?)传参。而其实一个很大的误区不要认为没有查询字符串就是RESTful API,也不要认为用了查询字符串就不是RESTful API,更不要认为用了JSON传输的API就是RESTful API。本教程将带你了解RESTful并用SpringBoot实战RESTful API,在实现本案例前,你需要保证你的电脑上拥有IDEA用来编写项目代码拥有Postman模拟请求进行测试拥有关系数据库MySQL 5.7拥有navicat对MySQL进行管理REST与RESTful API的关系REST(英文:Representational State Transfer,简称REST,直译过来表现层状态转换)是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。需要注意的是REST并没有一个明确的标准,而更像是一种设计的风格,满足这种设计风格的程序或接口我们称之为RESTful(从单词字面来看就是一个形容词)。所以RESTful API 就是满足REST架构风格的接口。REST架构特征大致有以下几个主要特征:以资源为基础 :资源可以是一个图片、音乐、一个XML格式、HTML格式或者JSON格式等网络上的一个实体,除了一些二进制的资源外普通的文本资源更多以JSON为载体、面向用户的一组数据(通常从数据库中查询而得到)。统一接口: 对资源的操作包括获取、创建、修改和删除,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。换言而知,使用RESTful风格的接口但从接口上你可能只能定位其资源,但是无法知晓它具体进行了什么操作,需要具体了解其发生了什么操作动作要从其HTTP请求方法类型上进行判断。具体的HTTP方法和方法含义如下:GET(SELECT):从服务器取出资源(一项或多项)。POST(CREATE):在服务器新建一个资源。PUT(UPDATE):在服务器更新资源(客户端提供完整资源数据)。PATCH(UPDATE):在服务器更新资源(客户端提供需要修改的资源数据)。DELETE(DELETE):从服务器删除资源。当然也有很多在具体使用的时候使用PUT表示更新。从请求的流程来看,RESTful API和传统API大致架构如下:URI指向资源:URI = Universal Resource Identifier 统一资源标志符,用来标识抽象或物理资源的一个紧凑字符串。URI包括URL和URN,在这里更多时候可能代指URL(统一资源定位符)。RESTful是面向资源的,每种资源可能由一个或多个URI对应,但一个URI只指向一种资源。无状态:服务器不能保存客户端的信息, 每一次从客户端发送的请求中,要包含所有必须的状态信息,会话信息由客户端保存, 服务器端根据这些状态信息来处理请求。 当客户端可以切换到一个新状态的时候发送请求信息, 当一个或者多个请求被发送之后, 客户端就处于一个状态变迁过程中。 每一个应用的状态描述可以被客户端用来初始化下一次的状态变迁。RESTful API设计规范既然了解了RESTful的一些规则和特性,那么具体该怎么去设计一个RESTful API呢?要从URL路径、HTTP请求动词、状态码和返回结果等方面详细考虑。至于其他的方面例如错误处理、过滤信息等规范这里就不详细介绍了。URL设计规范URL为统一资源定位器 ,接口属于服务端资源,首先要通过URL这个定位到资源才能去访问,而通常一个完整的URL组成由以下几个部分构成:URI = scheme "://" host ":" port "/" path [ "?" query ][ "#" fragment ]scheme: 指底层用的协议,如http、https、ftphost: 服务器的IP地址或者域名port: 端口,http默认为80端口path: 访问资源的路径,就是各种web 框架中定义的route路由query: 查询字符串,为发送给服务器的参数,在这里更多发送数据分页、排序等参数。fragment: 锚点,定位到页面的资源我们在设计API时URL的path是需要认真考虑的,而RESTful对path的设计做了一些规范,通常一个RESTful API的path组成如下:/{version}/{resources}/{resource_id}version:API版本号,有些版本号放置在头信息中也可以,通过控制版本号有利于应用迭代。resources:资源,RESTful API推荐用小写英文单词的复数形式。resource_id:资源的id,访问或操作该资源。当然,有时候可能资源级别较大,其下还可细分很多子资源也可以灵活设计URL的path,例如:/{version}/{resources}/{resource_id}/{subresources}/{subresource_id}此外,有时可能增删改查无法满足业务要求,可以在URL末尾加上action,例如/{version}/{resources}/{resource_id}/action其中action就是对资源的操作。从大体样式了解URL路径组成之后,对于RESTful API的URL具体设计的规范如下:不用大写字母,所有单词使用英文且小写。连字符用中杠"-"而不用下杠"_"正确使用 "/"表示层级关系,URL的层级不要过深,并且越靠前的层级应该相对越稳定结尾不要包含正斜杠分隔符"/"URL中不出现动词,用请求方式表示动作资源表示用复数不要用单数不要使用文件扩展名HTTP动词在RESTful API中,不同的HTTP请求方法有各自的含义,这里就展示GET,POST,PUT,DELETE几种请求API的设计与含义分析。针对不同操作,具体的含义如下:GET /collection:从服务器查询资源的列表(数组) GET /collection/resource:从服务器查询单个资源 POST /collection:在服务器创建新的资源 PUT /collection/resource:更新服务器资源 DELETE /collection/resource:从服务器删除资源在非RESTful风格的API中,我们通常使用GET请求和POST请求完成增删改查以及其他操作,查询和删除一般使用GET方式请求,更新和插入一般使用POST请求。从请求方式上无法知道API具体是干嘛的,所有在URL上都会有操作的动词来表示API进行的动作,例如:query,add,update,delete等等。而RESTful风格的API则要求在URL上都以名词的方式出现,从几种请求方式上就可以看出想要进行的操作,这点与非RESTful风格的API形成鲜明对比。在谈及GET,POST,PUT,DELETE的时候,就必须提一下接口的安全性和幂等性,其中安全性是指方法不会修改资源状态,即读的为安全的,写的操作为非安全的。而幂等性的意思是操作一次和操作多次的最终效果相同,客户端重复调用也只返回同一个结果。上述四个HTTP请求方法的安全性和幂等性如下:HTTP Method安全性幂等性解释GET安全幂等读操作安全,查询一次多次结果一致POST非安全非幂等写操作非安全,每多插入一次都会出现新结果PUT非安全幂等写操作非安全,一次和多次更新结果一致DELETE非安全幂等写操作非安全,一次和多次删除结果一致状态码和返回数据服务端处理完成后客户端也可能不知道具体成功了还是失败了,服务器响应时,包含状态码和返回数据两个部分。状态码我们首先要正确使用各类状态码来表示该请求的处理执行结果。状态码主要分为五大类:1xx:相关信息2xx:操作成功3xx:重定向4xx:客户端错误5xx:服务器错误每一大类有若干小类,状态码的种类比较多,而主要常用状态码罗列在下面:200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。202 Accepted -:表示一个请求已经进入后台排队(异步任务)204 NO CONTENT - [DELETE]:用户删除数据成功。400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。401 Unauthorized -:表示用户没有权限(令牌、用户名、密码错误)。403 Forbidden - 表示用户得到授权(与401错误相对),但是访问是被禁止的。404 NOT FOUND -:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。500 INTERNAL SERVER ERROR -:服务器发生错误,用户将无法判断发出的请求是否成功。返回结果针对不同操作,服务器向用户返回数据,而各个团队或公司封装的返回实体类也不同,但都返回JSON格式数据给客户端。
-
【问题简要】AICC8.15.1spc4 CC-GATEWAY 是否支持客户端对接 API【问题类别】 CC-Gateway【AICC解决方案版本】 AICC8.15 【期望解决时间】 尽快【功能模块】AICC中的CC-Gateway【操作步骤&问题现象】现网使用的IPCC espace CC V200R001C50SPC100解决方案的CC-gateway,前端坐席是通过调用加载resource-js API(如图2) 进行开发的如图1,CC-gateway升级到AICC8.15.1spc4 后无法加载resource-js;AICC8.15.1spc4 没有找到 http://Agent Server IP地址:8000/agentgateway/resource-js【截图信息】下面是现网使用的调用方式,目前疑问是想知道AICC8.15.1spc4 是否还保留了这种模式,如果有保留,应如何进行修改CC-gateway配置。【日志信息】(可选,上传日志内容或者附件)
-
【功能模块】AICC中的CC-Gateway【操作步骤&问题现象】现网使用的IPCC espace CC V200R001C50SPC100解决方案的CC-gateway,前端坐席是通过JavaScript API 进行开发的,CC-gateway升级到AICC8.15.1spc4 后无法调用;AICC8.15.1spc4 没有找到 http://Agent Server IP地址:8000/agentgateway/resource-js【截图信息】下面是现网使用的调用方式,目前疑问是想知道AICC8.15.1spc4 是否还保留了这种模式,如果有保留,应如何进行修改CC-gateway配置。
-
转载自:https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=183081开天aPaaS已经开始公测了,请小伙伴们积极参与。1 目的和范围1.1 目的通过最佳实践,指导工业相关的技术模型与集成工作台快速集成。1.2 范围本文档适用于使用集成工作台及CauchyMind模型,进行零码开发,实现设备预测性维护的业务人员。2 设计2.1 系统清单系统&接口地址备注集成工作台cid:link_2状态识别模型XXX.XXX.XXX.XXX(IP):XX(端口)/path数据设备故障数据1条、设备健康数据1条备注:最佳实践的状态识别模型的IP为可被公网直接访问的弹性IP3 配置过程3.1 前期准备集成工作台Step1:登录华为云Step2:点击2.1表格中的集成工作台地址Step3:申请公测,申请成功后,页面如下所示:状态识别模型(可以用于设备的故障识别)Step1:完成本机安全配置(此步略),涉及防火墙、安全组、本地防火墙Step2:完成本机调用接口成功,本次实验设计接口如下:URL: http://XXX.XXX.XXX.XXX/api/phm-fault-analyze/{point_id}方法:POSTPath参数:point_id 类型:stringHeader参数:Content-Type:application/json;charset=utf8Body:”value”:”xxxxxxxx” 类型:json返回值:true/false测试数据以下数据为json格式,可将{"value":"XX"},中的XX先复制出来以备后用{"value":"[-1.39505, -1.08961, 2.11103, 1.9968400000000002, 3.78912, 0.9229700000000001, 0.41317000000000004, -1.6149499999999999, -2.90004, -2.03396, -2.18487, 3.36486, 1.74245, 5.61287, 0.2427, 0.17451000000000003, -2.0148, -3.891, -4.00619, -3.40944, -0.6482, 0.64517, 4.09173, 1.8701500000000002, -0.96513, -1.91978, -1.51044, -2.40013, -3.47723, -1.50116, 1.64823, 0.25198000000000004, -2.1983800000000002, -2.91033, -1.8511900000000001, 0.9219600000000001, 3.36465, 2.12697, 2.75701, 3.19802, 2.26476, -0.6944, -2.39811, 0.6155200000000001, 2.49535, 2.56555, 0.62338, 2.06604, 1.5233500000000002, -0.28627, -0.6800700000000001, -2.01561, -0.2669, 1.08436, 0.44524, 0.34599, -1.61172, 0.13053, -1.30628, -1.02283, -2.224, -0.5638700000000001, -0.8793900000000001, -1.6797, 0.63004, 0.14525000000000002, -0.024210000000000002, -0.02542, 1.50015, 0.8727400000000001, -0.05407000000000001, -1.30668, -0.44524, 1.62644, 0.2899, 0.03389, 1.73095, 1.40433, 1.0654, -0.10006000000000001, -0.36798000000000003, 2.67026, 2.31055, 0.29696, -2.3739, -0.63549, -1.2627, -1.59598, -0.52917, -0.03309, 0.9264, -0.13517, 1.99866, -2.30672, -0.41397000000000006, -1.29397, 0.69137, -2.39367, -2.36563, -0.95303, -0.35749000000000003, 2.0725, -0.82815, 0.25298000000000004, -2.35251, -1.01073, 0.22837000000000002, 2.52077, 2.40376, 3.16251, 2.95714, 0.32985000000000003, -1.9102999999999999, -3.33802, -2.74934, 0.43697, 2.53227, 4.28722, 1.85663, 0.20558, -0.5092, -2.03255, -0.9947900000000001, -1.49773, 1.45274, 0.8194800000000001, 1.1116, -1.26694, -2.9325200000000002, -2.46388, -2.75277, 1.59517, 3.59222, 1.60345, 1.8033700000000001, 2.28453, 0.32662, -3.66807, -2.58795, -2.20363, 0.21707, 0.51949, -0.49992000000000003, -0.63448, 0.27154, 0.12165000000000001, -1.19714, 1.16284, 1.42652, 1.8467500000000001, 0.13638, -1.18402, -0.78256, -4.37962, -4.61142, -2.27182, -1.4939, 1.98655, 3.55187, 4.77342, 3.59605, 1.12148, -0.25884, -1.7945, -2.42212, -2.60429, 2.03215, 1.80438, 1.8441200000000002, 2.26637, 0.27941000000000005, 0.07727, 0.57416, 2.7788, 1.19209, 3.98602, 1.0535, 0.56205, -3.05216, -3.4308300000000003, -2.8475900000000003, -1.8205200000000001, 1.01839, 1.7945, 2.77779, 0.18237, 1.23607, -1.79672, -3.00535, -1.7860200000000002, -1.08174, 0.08312000000000001, -2.07209, -1.67184, -1.86914, -1.84069, -1.21126, -1.10817, 0.08756000000000001, -0.23463000000000003, 2.12818, 1.95044, 0.23806000000000002, 0.28809, 0.7240500000000001, 1.06943, -1.2350700000000001, -1.86753, -1.2506, 1.91716, 3.04731, 1.9056600000000001, 1.1927, -0.9506100000000001, -0.7367600000000001, -2.2750500000000002, -3.15343, -1.18503, 0.29031, 0.79708, -0.9744100000000001, -0.8864500000000001, -1.7255, -0.11641000000000001, 0.73858, 0.58303, 2.34364, 0.84086, 1.45517, -0.51222, -2.49858, -2.01117, -1.5054, -1.2387000000000001, 0.27558000000000005, 2.21795, 3.17381, 3.06366, 2.36563, 1.74063, -0.13214, -0.6873400000000001, -0.7295, 1.58045, 2.40678, 2.432, 1.3060800000000001, -0.07969000000000001, -0.7010500000000001, 0.14848, -1.15074, -1.15235, 2.93414, 1.85139, 1.72268, -2.6283000000000003, -1.24757, -3.27851, -2.55506, -3.22465, -0.49951000000000007, 0.579, 0.8473200000000001, 0.83884, -2.42817, -1.82496, -2.58815, 0.52292, 0.7028700000000001, 1.13097, 1.46969, 0.5675, -0.13376000000000002, -2.8837, -1.91857, 0.013110000000000002, 1.71461, 3.8861600000000003, 3.1036, 3.72073, 0.9839, -1.5282]"}3.2 配置连接器Step1:点击创建连接器,选择从空白创建Step2:定义链接器名称,并填写状态识别模型的IP:端口,点击下一步Step3:选择无认证,点击下一步Step4:编辑执行动作,定义执行动作名称以及配置相关参数定义名称配置动作及URL配置主体参数(模型中的body,注意root不要修改,新增子节点即可)配置标题(模型中的Header参数,注意root不要修改,新增子节点即)配置查询路径配置结果并创建连接器3.3 配置流Step1:选择我的流,并创建流Step2:定义流名称、选择手动触发,选择触发事件,并添加执行动作Step3:配置手动触发事件,将Header参数(type)、path参数(pointid)、value(body,在前期准备中描述的需要复制备用的XX)配置好,并点击添加执行动作。Step4:选择自定义,PHM连接器,并选择配置连接器过程中定义的执行动作stateStep5:通过动态内容,配置具体的参数,动态内容的参数为Step3配置的内容,之后点击添加执行动作Step6:添加控制动作,选择控制,执行动作选择条件判断Step7:添加判断条件参数因为模型返回值为true/false,true意味着设备异常;false意味设备正常Step8:添加执行动作,针对不同设备故障预测结果,短信发送至不同的人Step9:至此,完成配置3.4 调试Step1:点击上图的保存并调试,并选择运行Step2:至此,小实验已经完成,收到短信了呢,你们说联轴器1是什么状态呢?
-
【功能模块】【操作步骤&问题现象】1、管理->应用管理->连接器2、同步API时报错,报错信息Permission denied. The request address[172.16.108.128] has not permit to call the services【截图信息】【日志信息】(可选,上传日志内容或者附件)
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第三期2026/08/21 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;念擎-华为云AI开发者运营案例开发专家
本期直播内容:AI六层能力首次详细解读 + 新一代华为云开发者空间亮相 + 校园案例直播带练
回顾中
热门标签