华为北向网管NCE开发教程(2)REST接口开发

华为北向网管NCE开发教程(1)闭坑选接口协议
华为北向网管NCE开发教程(2)REST接口开发
华为北向网管NCE开发教程(3)CORBA协议开发
假设你现在要开始华为北向接口REST协议之前,需要准备如环境

1准备工作

1.1环境准备

IP:		北向网管NCEIP地址
端口:	31943	3194526335
地址:	
https://<IP>:31943   NCE管理系统
https://<IP>:31945   NCE运维系统
https://<IP>:26335 	 REST服务接口

1.2文档准备

准备如下一系列文档,以下文档不必齐全,其中《用户指南》、《REST API参考》为必须有
在这里插入图片描述
版本说明
首先得确定你对接的网管是那个版本,文档版本和NEC的版本最好保持一致,不保持一致,无法保证实际调用接口和接口版本一致
例如通过:登录:https://:31943,可以在NCE管理系统系统中查看你的接口文档版本和实际的NCE系统的版本是否一致。
在这里插入图片描述

1.3API测试工具

测试工具就比较简单了,比如postMan等接口测试工具就可以了,假设如果你们的开发电脑不能直接访问北向NCE的话(事实证明,很多情况下,确实不允许你们的开发电脑访问NCE的),只要REST接口也不怕,可以写一个程序,部署到服务器,然后服务器转发HTTP请求到NCE系统。
针对不能直接访问网管NCE的流程如下:
在这里插入图片描述
例如我是这样做的:
编写一个SpringBoot程序,集成了swagger,将改程序部署到服务器,然后找一台能访问服务器的电脑,打开我们的wagger接口测试页面。然后我们在这里组织我们请求网管NCE的参数
例如:请求网管NCE的地址、请求方式、请求参数、token。
在这里插入图片描述
服务器接收到请求以后,根据swagger提交的参数向网管NCE发起请求。
在这里插入图片描述

2配置工作

再次还是提一下,前提条件,能保证REST接口能用起来,否则,我建议你终止,换其他接口
参考《北向REST接口 用户指南》配置REST接口
在这里插入图片描述

2.1检查license

  1. 访问地址:https://运维面IP地址:31943
  2. 选择“系统设置”App后,在主菜单中选择“系统设置 > License管理”
  3. 然后查看License选项中,看license是否可用
  4. 部分版本的NCE,选择License管理管理,发现只有纯文本介绍,没有license相关的具体内容,可以在右上角的搜索框里面搜索License,那儿可以进去。
  5. 具体页面的最终效果如下,因为我在写这篇文章的时候,我也没办法访问网管NCE了。
    在这里插入图片描述
    License 要想可用,必须保证 消耗量 / 容量,不能超过百分之20,容量超限百分之20以后,直接不能使用,得加钱!得加钱!得加钱!重要的事说三遍。
消耗量/容量  >  120% ,license将直接不能用
消耗量/容量  <  100% ,license一直可用
100%  <消耗量/容量  <  120% ,license只可以在用三个月

2.2配置REST接口

如图所示,在这里可以看到你当前使用的这个版本的NCE在配置NCE的时候,是否有哪些必须配置的
在这里插入图片描述
我这个版本中,可以看到除了3.2以外,都是非必选
备注: 3.2也可以非必选,在调用的时候,禁用SSL认证即可。后面会说
在这里插入图片描述
在这里插入图片描述

备注: 3.6需要注意,某些版本在配置3.6版本时,会弹框提示你,需要启动某某服务,则按照下面的《启动REST接口服务》操作中,去启动该服务即可。

2.3启动REST接口服务

具体操作,我就不多说了,看指南里面操作即可。
在这里插入图片描述

2.3创建REST接口服务的用户

详情见操作指南3.9,这一步不是必须,如果已经有这样的用户了,就不用创建,没有的话,还是需要创建
在这里插入图片描述

3调试工作

3.1API测试工具调试

3.1.1登录接口

通过接口文档找到登录接口,在该接口中,找到请求方式、请求地址、请求参数、
在这里插入图片描述
打开PostMan,设置请求参数为PUT,请求数据为Json,填入请求地址,填入请求参数
在这里插入图片描述

重点:由于在配置REST的时候,我们没有配置证书,因此我们需要在设置中,禁用SSL证书验证
在这里插入图片描述

由于楼主写文章的时候,我已经离开机房,或者客户现场了,总之就是我现在没办法访问网管NCE了,只能给你们以前我访问拿到的一些数据了,例如这是我之前调试拿到的返回报文。

{"accessSession": "x-lc1gjug9lglijvvv7tvsip3whhsbka0anzoapg7yhi04apc76l9cg6tgft7z1d9darpeqp2qhdo9qn89sbfzanqpurbxqlhdmp89irc9tdjsliqmakqkrxo8hc2oelc5","roaRand": "ae136e1468ea024e3a61731c99947f5ea27e7d13005d6579","expires": 1800,"additionalInfo": null
}

通过登录接口,我们就可以拿到token信息了

3.1.2查询所有机房

找到我们需要的接口,找到请求参数,请求地址,请求方式等
在这里插入图片描述
按照接口填写地址,请求方式,然后把上面我们的登录接口中获取到accessSession复制下来,在postMan的headers中,添加X-Auth-Token,即可发起请求
在这里插入图片描述

3.2代码调试

当我们使用代码调试(无法直接用postMan访问网管NCE),或者开始开始编写代码访问NCE采集数据的时候,其实就是我们用代码模拟postMan请求。

3.2.1登录接口

登录太简单了,就不说了。直接看代码

@Data
public class LoginReq {private String url;private String grantType;private String userName;private String value;
}
@Data
public class LoginRes {private String accessSession;//": "x-yyyyyyy",private String roaRand;//": "xxxxxxx",private int expires;//": 1800,
}
public String loginNce() {ResponseEntity<LoginRes> res = restTemplate.postForEntity(loginReq.getUrl(), loginReq, LoginRes.class);return res.getBody().getAccessSession();
}

3.2.2查询所有机房

除登录以外的接口,就稍微复杂点,因为在postman测试的时候,我们添加了X-Auth-Token并且禁用了SSL证书,因此,我们用代码请求的时候,也需要这样做

如下这个代码是我用来调试网管NCE接口,在部署服务器上转发的代码,主要是把wagger传过来的token,地址,url,请求方式,请求地址拿过来,构建一个http请求。你可以理解为,我在服务器上构建了一个类似postman的功能,,然后我把参数给服务器,服务器给我发起请求到网管NCE

@Data
public class ReqTest {@NotEmpty@ApiModelProperty("请求方式")private String method;@NotEmpty@ApiModelProperty("请求地址")private String url;private String token;@ApiModelProperty("请求参数")private Map<String, Object> body;
}
public Object restHuaweiNce(ReqTest req) {HttpHeaders headers = new HttpHeaders();headers.add("X-Auth-Token", req.getToken());headers.setContentType(MediaType.APPLICATION_JSON);HttpEntity<Object> reqEntity = new HttpEntity<>(req.getBody(), headers);HttpMethod method = HttpMethod.resolve(req.getMethod().toUpperCase());ResponseEntity<Object> res = restTemplate.exchange(req.getUrl(), method, reqEntity, Object.class);return res.getBody();
}

如果你能直接连网管NCE,或者正式开发,就不需要我这么麻烦了,直接用put、get、post即可,不过你也需求像上面一样,在headers 里面,添加X-Auth-Token

restTemplate.put(null, req);
restTemplate.getForEntity(null, null);
restTemplate.postForEntity(null, req, null);

到这里还不够,因为我们还没有禁用SSL

/*** @description:Rest配置* @author:hutao* @date:2022年3月5日*/
@SpringBootConfiguration
public class RestTemplateConfig {/*@Beanpublic RestTemplate restTemplate() {SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();factory.setConnectTimeout(10000);factory.setReadTimeout(10000);return new RestTemplate(factory);}*//*** @description:关闭SLL验证* @author:hutao* @date:2024年2月29日 下午3:46:19*/@Beanpublic RestTemplate restTemplate() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException {TrustStrategy acceptingTrustStrategy = (X509Certificate[] chain, String authType) -> true;SSLContext sslContext = org.apache.http.ssl.SSLContexts.custom().loadTrustMaterial(null, acceptingTrustStrategy).build();SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext);CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(csf).build();HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();factory.setHttpClient(httpClient);factory.setConnectTimeout(10000);factory.setReadTimeout(10000);RestTemplate restTemplate = new RestTemplate(factory);return restTemplate;}
}

至此,华为北向网管NCE REST接口开发就到这里了,剩下的具体要调用哪个接口,我就没招了,毕竟那么多个接口,我也不能挨个调用,只能选一两个示例了。后面我还会讲CORBA,那个会超级恶心。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/731215.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue中用户权限如何处理?

Vue中用户权限如何处理&#xff1f; 在 Vue 中&#xff0c;可以采用多种方式来处理用户权限&#xff0c;以下是一些常见的方法&#xff1a; 1. 使用路由守卫 Vue Router 提供了 beforeEach 导航守卫&#xff0c;可以在路由跳转之前进行权限检查。例如&#xff1a; router.be…

Leetcode3069. 将元素分配到两个数组中 I

Every day a Leetcode 题目来源&#xff1a;3069. 将元素分配到两个数组中 I 解法1&#xff1a;模拟 简单地按题意模拟。 代码&#xff1a; /** lc appleetcode.cn id3069 langcpp** [3069] 将元素分配到两个数组中 I*/// lc codestart class Solution { public:vector<…

【libwebrtc】基于m114

libwebrtc A C++ wrapper for binary release, mainly used for flutter-webrtc desktop (windows, linux, embedded).是 基于m114版本的webrtc 最新(20240309 ) 的是m122了。官方给出的构建过程 .gclient 文件 solutions = [{"name" : src,"url

微软AI工程师向联邦贸易委员会(FTC)发出警告,对Copilot Designer的安全性表示担忧

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

gitte上传项目操作

一、项目背景 打比赛&#xff0c;多个人合作&#xff0c;选择github&#xff0c;顺便了解下git的代码操作。 二、步骤 2.1 新建仓库 2.2 打开你要上传到库的项目 2.2 选择 Git Bash Here 输入指令 git init 2.3 查找github的仓库 2.2 将文件放入暂缓区 git add . 2.3填写…

LLM PreTraining from scratch -- 大模型从头开始预训练指北

最近做了一些大模型训练相关的训练相关的技术储备&#xff0c;在内部平台上完成了多机多卡的llm 预训练的尝试&#xff0c;具体的过程大致如下&#xff1a; 数据准备&#xff1a; 大语言模型的训练依赖于与之匹配的语料数据&#xff0c;在开源社区有一群人在自发的整理高质量的…

jeecgboot 新建子模块 使用@EXCEL实现实现导入导出功能

一&#xff0c;用框架生成增删改查模块 二&#xff0c;在实体类entity 需要导入导出的字段上加上注解Excel 三&#xff0c;在controller类上继承jeecgboot通用controller JeecgController 并且在JeecgController里增加导出模板的方法 /*** 导出excel空模板** param req…

专业140+总430+电子科技大学858信号与系统考研经验成电电子信息与通信工程,电科大,真题,大纲,参考书。

今年考研成绩出来&#xff0c;初试专业课858信号与系统140&#xff0c;总分430&#xff0c;其余各门分数都比较平稳&#xff0c;总分好于自己估分&#xff0c;应群里很多同学要求&#xff0c;我总结一下自己的复习经验。首先我是一个大冤种&#xff0c;专业课资料学长给了一套&…

挑战杯 基于深度学习的视频多目标跟踪实现

文章目录 1 前言2 先上成果3 多目标跟踪的两种方法3.1 方法13.2 方法2 4 Tracking By Detecting的跟踪过程4.1 存在的问题4.2 基于轨迹预测的跟踪方式 5 训练代码6 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的视频多目标跟踪实现 …

软考高级:系统工程生命周期方法(计划驱动方法、渐进迭代式方法等)概念和例子

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

如何在Ubuntu系统部署DbGate数据库管理工具并结合cpolar内网穿透远程访问

文章目录 1. 安装Docker2. 使用Docker拉取DbGate镜像3. 创建并启动DbGate容器4. 本地连接测试5. 公网远程访问本地DbGate容器5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定公网地址远程访问 本文主要介绍如何在Linux Ubuntu系统中使用Docker部署DbGate数据库管理工…

web组态

演示地址 &#xff1a;by组态[web组态插件] 这是一款可以嵌入到任何项目组态插件&#xff0c;功能全面&#xff0c;可根据自己的项目需要进行二次开发&#xff0c;能大大的节省在组态上的开发时间&#xff0c;代码简单易懂。 一、数据流向图及嵌入原理 数据流向 嵌入原理 …

深度神经网络 基本知识 记录

资料&#xff1a;https://www.bilibili.com/video/BV1K94y1Z7wn/?spm_id_from333.337.search-card.all.click&vd_source14a476de9132ba6b2c3cbc2221750b99 计划&#xff1a;3~4天 注&#xff1a;网课讲的内容比较糅杂&#xff0c;记录的内容可能会出现重复 杂 人工智能…

<商务世界>《第8课 Leads——MQL——SQL——商机——成交》

1 各种概念 英文缩写概念Traffic流量Leads潜在客户&#xff0c;销售线索&#xff1b;简称潜在线索MQLMarketing-Qualified Leads市场认可线索SQLSales-Qualified Leads销售认可线索OPPOpportunity商机Account成单客户 2 线索到商机 一般企业会把自身线索进行如下的划分&…

【电工学笔记】上册第一、二章

电工学 上次考试败在了单位&#xff0c;这次单位 一定要记熟。 第一章 电源或信号源的电压或电流称为激励,它推动电路工作; 由激励所产生的电压和电流称为响应。 复杂电路中,一般无法事先判断某个支路电流的 实际方向或者某个电路元件电压的实际方向 140V/4算不出总电阻的 …

数据结构面试常见问题

数据结构面试常见问题 什么是 AVL 树&#xff1f;什么是红黑树&#xff1f;AVL 树和红黑树的区别&#xff1f;B 树和B 树的区别&#xff1f;排序有哪些分类&#xff1f;直接插入排序的原理&#xff1f;希尔排序的原理&#xff1f;直接选择排序的原理&#xff1f;堆排序的原理&a…

vue3的开发小技巧

「总之岁月漫长&#xff0c;然而值得等待。」 目录 父组件调用子组件函数如何访问全局api 父组件调用子组件函数 ref, defineExpose //父组件 代码 <child ref"ch">this.$refs.ch.fn();//子组件 函数抛出 const fn () > { }; defineExpose({ fn });如何…

考研复习C语言初阶(3)

目录 一.函数是什么? 二.C语言中函数的分类 2.1库函数 2.2自定义函数 三.函数的参数 3.1实际参数&#xff08;实参&#xff09; 3.2 形式参数&#xff08;形参&#xff09; 四.函数的调用 4.1 传值调用 4.2 传址调用 五. 函数的嵌套调用和链式访问 5.1 嵌套调用 5…

瑞芯微 | I2S-音频基础分享

1. 音频常用术语 名称含义ADC&#xff08;Analog to Digit Conversion&#xff09;模拟信号转换为数字信号AEC&#xff08;Acoustic Echo Cancellor&#xff09;回声消除AGC&#xff08;Automatic Gain Control&#xff09;自动增益补偿&#xff0c;调整MIC收音量ALSA&#xf…

Jmeter常用组件的使用场景

一.在一段时间内持续发送请求 此场景可以用于稳定性测试&#xff0c;在稳定性测试中&#xff0c;通常需要持续压测几个小时甚至几天时间&#xff0c;查看接口是否有报错&#xff0c;或者cpu、内存会上涨&#xff0c;此时就需要通过控制持续时间来达到此目的。 1.创建线程组&am…