• [其他] 开天工作台公测!3个短视频快速上手集成工作台(第一期)如何利用模板创建一个自动化流
    没错!开天工作台公测啦!什么是开天集成工作台>>开天集成工作台免费体验集成工作台>>立即开通怎样使用集成工作台>>用户指南操作步骤1. 进入集成工作台的控制页面找到左侧目录的“流管理”,在“我的流”可以直接创建,或是从模板创建流2. 选择与业务场景相近的模板,点击“创建流”3. 修改流名称,改为“天气预报短信通知”4. 设置参数设置“重复执行”的参数:这个流是根据时间触发的,点击“重复执行”,在右边的弹框中设置“首次运行时间”和“重复周期”设置“近三天天气”的参数:在下拉列表中选择城市,或者自定义查找设置“近三天空气质量”的参数:在下拉列表中选择城市,或者自定义查找设置“发送短信”的参数:填写“收件人”(手机号)及“短信内容”,可使用已编辑好的模板,也可在左侧下拉列表中选择其他内容项 5. 整个流的内容编辑完后,保存6. 回到“流管理”-“我的流”列表,找到刚编辑好的流,点击“开启”;到了设定好的x点它就会自动执行,给我们发送短信。7. 运行效果,收到定时发送的天气预报短信其他推荐【开天工作台入门指导】02-从创建连接器开始完成从空白创建流【开天工作台入门指导】03-手动触发流与自动化流的区别
  • [问题求助] 华为云Stack的API有sdk吗
    有sdk吗,用api毕竟不太方便,主要是管理虚拟机、网络等资源
  • [已解决问题归档] AICC8.15.1spc4 CC-GATEWAY 是否支持客户端对接 API
    【问题来源】星网【问题简要】现网使用的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配置。【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [服务构建器] 【华为云Stack ManageOne 服务构建器】在服务构建器中该如何理解和使用资源集
    #### 写在前面 用云的小伙伴一般对region、AZ比较熟悉,华为云Stack ManageOne 运营又增加了VDC和资源集的概念,该如何理解呢? #### 理解 - REGION 一般都是跨地域的,不在同一个物理位置。例如:华为云、电信云等应该具备多个region,满足不同区域不同业务类型的客户。华为云就有华北、华东、乌兰察布等。 - VDC Virtual Data Center,虚拟数据中心是一个管理层面的概念,一般可以理解是一个组织会有一个VDC。例如一个公司他的业务遍布全国,可以在华为云上注册一个账号,这个账号就是一个1级VDC,这个VDC可以使用所有region的资源(前提是有配额)。HCS就是一个组织架构比较大的企业也可以自建云之后,对陕西子公司开一个属于它们的VDC,广东也有自己的VDC。 - 资源集(project) 资源集,顾名思义资源的集合,主要是针对资源进行配额管理、约束的。不同的资源集可以有不同的服务、实际在使用中可能会有切换region的错觉。 一张丑陋的理解图: ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20223/30/1648633064233454924.png) #### 资源集和服务构建器 服务构建器目前主要包含2中编排:资源类型和API类型。 - 资源类型 资源类型包含依赖资源集的资源,例如VPC、子网等,这些资源或者参数只有在资源集确定的情况下才能被创建或者是选择。 所以带来的一个问题是:如果一个服务上架到确定的资源集,就不能在其他资源集申请。 - API类型 API编排主要依赖在服务提供者里面注册的API,而API是和VDC有关,和资源集里面的资源没有关系的,所以我们上架的服务在任何一个资源集上都是可以申请的
  • [技术干货] 【转载】RESTful API简介
    在学习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
    【问题简要】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配置。【日志信息】(可选,上传日志内容或者附件)
  • [已解决问题归档] AICC8.15.1spc4 CC-GATEWAY 是否支持客户端对接 API
    【功能模块】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配置。
  • [其他] 零码开发10min上线小应用,CauchyMind PHM模型&开天aPaaS-集成工作台最佳实践
    转载自: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是什么状态呢?
  • [问题求助] 【ABC】【roma连接器api同步】api同步报错,Permission denied
    【功能模块】【操作步骤&问题现象】1、管理->应用管理->连接器2、同步API时报错,报错信息Permission denied. The request address[172.16.108.128] has not permit to call the services【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [技术干货] React项目中axios的封装与API接口的管理详解
    Axios是一个npm软件包,允许应用程序将HTTP请求发送到Web API,下面这篇文章主要给大家介绍了关于React项目中axios的封装与API接口的管理的相关资料,需要的朋友可以参考下目录• 前言 • 安装 • 引入 • 环境的切换 • 请求拦截 • 响应拦截 • api的统一管理 • 总结 前言在react项目中,和后台交互获取数据这块,我们通常使用的是axios库,它是基于promise的http库,可运行在浏览器端和node.js中。他有很多优秀的特性,例如拦截请求和响应、取消请求、转换json、客户端防御XSRF等。如果还对axios不了解的,可以移步axios文档 。安装1234//使用npm安装npm install axios; //使用yarn安装yarn add axios引入在项目根目录中,新建一个request文件夹,然后在里面新建一个index.js和一个api.js文件。index.js文件用来封装我们的axios,api.js用来统一管理我们的接口。123456//在index.js中引入axiosimport axios from 'axios';//引入qs模块,用来序列化post类型的数据import QS from 'qs';//antd的message提示组件,大家可根据自己的ui组件更改。import { message } from 'antd'环境的切换我们的项目环境可能有开发环境、测试环境和生产环境。我们通过node的环境变量来匹配我们的默认的接口url前缀。这里需要node的全局变量process,process.env.NODE_ENV可以区分是开发环境还是生产环境。12345//保存环境变量const isPrd = process.env.NODE_ENV == 'production'; //区分开发环境还是生产环境基础URLexport const basciUrl = isPrd ? 'https://www.production.com' : 'http://www.development.com'这里导出基础URL是为了防止有其他地方用到资源不一样,需要区分生产环境还是开发环境,导入就直接可以用了。请求拦截我们在发送请求前可以进行一个请求的拦截,为什么要拦截呢,我们拦截请求是用来做什么的呢?比如,有些请求是需要用户登录之后才能访问的,或者post请求的时候,我们需要序列化我们提交的数据。这时候,我们可以在请求被发送之前进行一个拦截,从而进行我们想要的操作。1234567891011121314151617181920212223//设置axios基础路径const service = axios.create({  baseURL: basicUrl})// 请求拦截器service.interceptors.request.use(config => {   // 每次发送请求之前本地存储中是否存在token,也可以通过Redux这里只演示通过本地拿到token  // 如果存在,则统一在http请求的header都加上token,这样后台根据token判断你的登录情况  // 即使本地存在token,也有可能token是过期的,所以在响应拦截器中要对返回状态进行判断   const token = window.localStorage.getItem('userToken') || window.sessionStorage.getItem('userToken');  //在每次的请求中添加token  config.data = Object.assign({}, config.data, {    token: token,  })  //设置请求头  config.headers = {    'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8'  }  config.data = QS.stringify(config.data)  return config}, error => {     return error;})这里说一下token,一般是在登录完成之后,将用户的token通过localStorage或者sessionStorage存在本地,然后用户每次在进入页面的时候(即在main.js中),会首先从本地存储中读取token,如果token存在说明用户已经登陆过,则更新Redux中的token状态。然后,在每次请求接口的时候,都会在请求的header中携带token,后台人员就可以根据你携带的token来判断你的登录是否过期,如果没有携带,则说明没有登录过。响应拦截1234567891011121314151617181920212223// 响应拦截器service.interceptors.response.use(response => {  //根据返回不同的状态码做不同的事情  // 这里一定要和后台开发人员协商好统一的错误状态码  if (response.code) {    switch (response.code) {      case 200:        return response.data;      case 401:        //未登录处理方法        break;      case 403:        //token过期处理方法        break;      default:        message.error(response.data.msg)    }  } else {     return response;  }})//最后把封装好的axios导出export default service响应拦截器很好理解,就是服务器返回给我们的数据,我们在拿到之前可以对他进行一些处理。例如上面的思想:如果后台返回的状态码是200,则正常返回数据,否则的根据错误的状态码类型进行一些我们需要的错误,具体返回的状态码需要处理那些流程还需要跟后台开发人员协商。上面的message.error()方法时我引入的antd的库提示组件,需要根据你的UI库,对应使用提示组件api的统一管理整齐的api就像电路板一样,即使再复杂也能很清晰整个线路。上面说了,我们会新建一个api.js,然后在这个文件中存放我们所有的api接口。首先我们在api.js中引入我们封装的axios12//导入我们封装好的axios import service from './index'现在,例如我们有这样一个接口,是一个post请求:1http://www.development.com/api/v1/articleEdit我们可以在api.js中这样封装:1export const apiArticleEdit = info => service.post('/api/v1/articleEdit', info);我们定义了一个apiArticleEdit方法,这个方法有一个参数info,info是我们请求接口时携带的参数对象。而后调用了我们封装的axios方法,第一个参数是我们的接口地址,第二个参数是apiArticleEdit的info参数,即请求接口时携带的参数对象。最后通过export导出apiArticleEdit。然后在我们的页面中可以这样调用我们的api接口:1234567891011121314151617181920import React, { Component } from 'react' import { apiArticleEdit } from './request/api'export default class App extends Component {  componentDidMount() {     // 调用api接口,并且提供了两个参数    let params = { type: 2, author: '北孤清茶' }    apiArticleEdit(params).then(res => {       // 获取数据成功后的其他操作      //.....      console.log(res)    })  }  render() {    return (      <div>               </div>    )  }}其他的api接口,就在api.js中继续往下面扩展就可以了。友情提示,为每个接口写好注释哦!!!api接口管理的一个好处就是,我们把api统一集中起来,如果后期需要修改接口,我们就直接在api.js中找到对应的修改就好了,而不用去每一个页面查找我们的接口然后再修改会很麻烦。关键是,万一修改的量比较大。还有就是如果直接在我们的业务代码修改接口,一不小心还容易动到我们的业务代码造成不必要的麻烦。好了,最后把完成的axios封装代码奉上。1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162//在index.js中引入axiosimport axios from 'axios';//引入qs模块,用来序列化post类型的数据import QS from 'qs';//antd的message提示组件,大家可根据自己的ui组件更改。import { message } from 'antd' //保存环境变量const isPrd = process.env.NODE_ENV == 'production'; //区分开发环境还是生产环境基础URLexport const basciUrl = isPrd ? 'https://www.production.com' : 'http://www.development.com' //设置axios基础路径const service = axios.create({  baseURL: basicUrl}) // 请求拦截器service.interceptors.request.use(config => {   // 每次发送请求之前本地存储中是否存在token,也可以通过Redux这里只演示通过本地拿到token  // 如果存在,则统一在http请求的header都加上token,这样后台根据token判断你的登录情况  // 即使本地存在token,也有可能token是过期的,所以在响应拦截器中要对返回状态进行判断   const token = window.localStorage.getItem('userToken') || window.sessionStorage.getItem('userToken');  //在每次的请求中添加token  config.data = Object.assign({}, config.data, {    token: token,  })  //设置请求头  config.headers = {    'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8'  }  //序列化请求参数,不然post请求参数后台接收不正常  config.data = QS.stringify(config.data)  return config}, error => {     return error;}) // 响应拦截器service.interceptors.response.use(response => {  //根据返回不同的状态码做不同的事情  // 这里一定要和后台开发人员协商好统一的错误状态码  if (response.code) {    switch (response.code) {      case 200:        return response.data;      case 401:        //未登录处理方法        break;      case 403:        //token过期处理方法        break;      default:        message.error(response.data.msg)    }  } else {     return response;  }})//最后把封装好的axios导出export default service总结到此这篇关于React项目中axios的封装与API接口管理的文章就介绍到这了转载自https://www.jb51.net/article/242127.htm
  • [技术干货] react使用axios进行api网络请求的封装方法详解
    目录• 前言 • 准备工作 • 开始封装axios • config.js • request.js • 进行请求 • 总结 前言最近写react项目使用到axios进行请求封装,在这里记录一下,希望可以帮助到初学的小伙伴准备工作进行请求需要使用axios,所以要先确定你已经安装完成了axios,查看package.json文件如果没有,请先安装axios1npm install axios开始封装axios首先在src目录下新建axios文件夹,这里我们新建两个文件,分别是config.js和request.jsconfig.js这个文件我们用来进行基础配置,区分开发环境:1.定义devBaseUrl开发环境和proBaseUrl生产环境2.使用process.env来区分开发还是生产环境,它返回的是一个包含用户的环境信息3.最后设置一下timeout1234const devBaseUrl = 'http://api.k780.com/'const proBaseUrl = 'http:xxx//xxxx.xx.com'export const BASE_URL = process.env.NODE_ENV === 'development' ? devBaseUrl : proBaseUrlexport const TIMEOUT = 5000request.js存放对应的封装方法和拦截器:1.首先导入axios和config中我们上面写的BASE_URL, TIMEOUT2.定义instance = axios.create({ }),里面存放对象3.写一个请求拦截器,在请求拦截器里面就可以做token验证之类的操作1234567891011121314import axios from 'axios'import { BASE_URL, TIMEOUT } from './config'const instance = axios.create({    baseURL: BASE_URL,    timeout: TIMEOUT})// 请求拦截器instance.interceptors.request.use(config => {    console.log('被拦截做一些操作')    return config}, err => {    return err})export default instance进行请求做完上面的封装之后,我们就可以进行请求操作了,来到要使用的页面首先进行导入刚刚写的request文件:1import request from '../../axios/request'我这里请求的是网上的一个天气接口,地址已经写在了上面config.js文件中的devBaseUrl对于api的请求,我们这里在componentDidMount()生命周期中进行异步请求:1.使用async await 进行异步操作2.使用data接收请求的结果,在request中写请求需要的params参数3.最后打印data看下结果,后面是使用setState修改值1234567891011121314async componentDidMount() {    const data = await request({      // 参数      params: {        app: 'weather.today',        weaId: 248,        appkey: 10003,        sign: 'b59bc3ef6191eb9f747dd4e83c99f2a4',        format: 'json'      }    })    console.log(data)    this.setState({weather: data.data.result.weather})  }查看打印的结果:可以看到请求到的data数据,这样就说明请求成功啦总结本篇文章就到这里了,希望能够给你带来帮助转载自https://www.jb51.net/article/242127.htm
  • [问题求助] 【华为云Stack6.5.0】【运行维护API】需要获取哪些API文档呢?
    # 问题描述: ### 有需求针对华为云Stack整体进行运维管理操作,包括远程上下电、虚拟机增删改查、设备状态监测等,我看Stack组成有点复杂,好多个不同的服务层面提供接口,比如ManageOne、Fusion Sphere什么的,似乎看着需要很多不同的API文档才能实现? ------------ 因为我对这个也不是很熟,前来请教一下社区的各类大佬们,要实现如上需求,我应该获取哪些API文档才行呢? # 跪谢!!!
  • [分享交流] 【3.24直播预告】工业数字化大讲堂 | 开天aPaaS如何赋能工业云?
    【直播时间】:2022-03-24 16:00-17:00【直播嘉宾】:金伟 华为云开天aPaaS首席规划专家 ,拥有12年云计算领域产品规划经验,精通云计算数据、运维等领域。【直播内容】:本期直播将介绍华为云开天aPaaS的业务目标和策略,分享开天aPaaS如何帮助企业用户提升软件购买和使用的体验;如何帮助ISV提升软件开发和盈利能力。3 月24日 16:00-17:00,点此观看直播~诚邀您及时收看并参与抽奖,精彩不容错过!往期精彩分享>> 【工业数字化大讲堂】第一期 华为数字化转型分享(车海平 华为公司高级副总裁、数字转型首席战略官)视频第二期 建立制造领域数字化转型的基石(陈振华 中国机床工具工业协会、工业互联网发展负责人)视频第三期 制造业数字化转型势道术(朱少盛 深圳赛瀚德技术有限公司CEO)视频第四期 华为供应链数字化分享(范美华 华为供应链管理部CIO)视频第五期 华为数字化转型实践(苏立清 华为云首席数字化转型官)视频第六期 华为数字化转型实践(张勇强 工业解决方案高级顾问)视频第七期 华为服务交付数字化转型之路(叶蓁蓁 华为软件云服务资深产品专家)视频第八期 制造业企业数据平台建设最佳实践分享(马千里 华为数据使能资深解决方案架构师)视频------------------------------------------------------------------------------------------------------更多精彩直播,请关注微信公众号“工业数字化大讲堂”↓↓
  • [其他] 【工业数字化大讲堂】第十期 · 开天aPaaS如何赋能工业云(金伟-华为云开天aPaaS首席规划专家)可回看
    【直播时间】:2022-03-24 16:00-17:00【直播嘉宾】:金伟 华为云开天aPaaS首席规划专家 ,拥有12年云计算领域产品规划经验,精通云计算数据、运维等领域。【直播内容】:本期直播将介绍华为云开天aPaaS的业务目标和策略,分享开天aPaaS如何帮助企业用户提升软件购买和使用的体验;如何帮助ISV提升软件开发和盈利能力。3 月24日 16:00-17:00,点此观看直播~诚邀您及时收看并参与抽奖,精彩不容错过!往期精彩分享>> 【工业数字化大讲堂】第一期 华为数字化转型分享(车海平 华为公司高级副总裁、数字转型首席战略官)视频第二期 建立制造领域数字化转型的基石(陈振华 中国机床工具工业协会、工业互联网发展负责人)视频第三期 制造业数字化转型势道术(朱少盛 深圳赛瀚德技术有限公司CEO)视频第四期 华为供应链数字化分享(范美华 华为供应链管理部CIO)视频第五期 华为数字化转型实践(苏立清 华为云首席数字化转型官)视频第六期 华为数字化转型实践(张勇强 工业解决方案高级顾问)视频第七期 华为服务交付数字化转型之路(叶蓁蓁 华为软件云服务资深产品专家)视频第八期 制造业企业数据平台建设最佳实践分享(马千里 华为数据使能资深解决方案架构师)视频------------------------------------------------------------------------------------------------------更多精彩直播,请关注微信公众号“工业数字化大讲堂”↓↓
  • [技术干货] 华为智慧园区调测术语和缩略语说明
    介绍智慧园区解决方案中所用到的术语和缩略语。表1 术语缩略语表AAdapterFDI的任务调度和资源调度。AHUAir Handling Unit,末端空调。AIArtificial Intelligence,人工智能。APIApplication Programming Interface,应用程序编程接口,应用将自身的服务能力封装成API,开放给用户调用。APICAPI Connect,ROMA平台的API管理产品,涵盖API网关、LiveData和API Market三个子产品。聚焦在API轻量化集成,存量系统服务化改造,全球跨云跨数据中心路由等核心功能,实现从API设计、开发、管理到发布的全生命周期管理和端到端集成。API GatewayAPI网关,提供API的完整生命周期管理,包括创建、维护、发布、运行、下线等。API授权网关授权给某个appid使用此API。AppCubeAppCube是一个面向企业商业应用的云开发平台,为您提供便捷、高效的应用开发能力。帮助您完成一个应用的在线开发、测试和部署。BBOBusiness Object,商业对象,一个BO相当于一个完整场景的服务。CCOPCoefficient of Performance,性能系统。DDDCDirect Digit Control,直接数字控制,简称为DDC系统,是用一台计算机对被控参数进行检测,再根据设定值和控制算法进行运算,然后输出到执行机构对生产进行控制,使被控参数稳定在给定值上。利用计算机的分时处理功能直接对多个控制回路实现多种形式控制的多功能数字控制系统。DLIData Lake Insight,数据湖探索。DOData Object,数据对象,数据平台沉淀的资产。EEIEnterprise Intelligence,企业智能。FFDIFast Data Integration,ROMA平台的数据集成产品,支持文本、消息、API、结构和非结构化数据等多种数据源之间的灵活、快速、无侵入式的数据集成,可以实现跨机房、跨数据中心、跨云的数据集成方案,并能自助实施、运维、监控集成数据。GGISGeographic Information System,地理信息系统。IIAMIdentity and Access Management,统一身份认证服务。IOIntegration Object,集成对象。IOCIntelligent Operation Center,智能运营中心。IoTInternet of Things,物联网。IVSIntelligent Video System,智能视频系统。J节点(DGC)定义对数据执行的操作。例如,使用“数据迁移”节点将数据从OBS导入到MRS Hive。LLiveData提供将各种DB内提供的数据服务,转换为REST接口的能力。MMQTTMessage Queueing Telemetry Transport Protocol,MQTT是一个物联网传输协议,被设计用于轻量级的发布/订阅式消息传输,旨在为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务。MQSMessage Queue Service,开源分布式消息系统RocketMQ进行封装满足三大集成场景要求Active RealTime Integration,主动实时消息集成。通过消息通道,实现IT系统间的数据/应用集成。NNFCNear Field Communication,近距离无线通信技术。OOBSObject Storage Service,对象存储服务。RROMARelationship,Open,MultiCloud,AnyConnect,集成平台。TTOPIC消息主题。消息的生产与消费,围绕消息主题进行生产、消费以及其他消息管理操作。Topic也是消息队列的一种发布与订阅消息模型。生产者向消息主题发布消息,多个消费者订阅该消息主题的消息,生产者与消费者彼此并无直接关系。VVAV BOXVariable Air Volume BOX,变风量空调系统的末端装置,其作为变风量空调系统的关键设备之一。空调系统通过末端装置调节一次风送风量,跟踪负荷变化,维持室温。VCMVCM和VCN是IVS平台两大业务模块:VCN:视频调阅平台,指图像管理服务,主要负责视图的接入、存储和转发。VCM:视频分析平台,指图像解析服务和图像检索服务,主要负责智能业务的处理。VCNVDCPVideo Disk Control Protocol ,视频磁盘通讯协议。WWelink华为云WeLink,企业数字化办公协作平台,融合消息、会议、邮件、知识、能力开放等,实现团队、知识、业务、设备的全面连接。X消息轨迹在一条消息从发布者发出到订阅者消费处理过程中,由各个相关节点的时间、地点等数据汇聚而成的完整链路信息。通过消息轨迹,用户能清晰定位消息从发布者发出,经由MQS服务端,投递给消息订阅者的完整链路,方便定位排查问题。Y应用通过对应用的角色权限定义,对API、数据、消息等进行权限隔离。Z作业(DGC)作业由一个或多个节点组成,共同执行以完成对数据的一系列操作。
总条数:1429 到第
上滑加载中