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

news2024/11/20 4:45:11

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

1准备工作

1.1环境准备

IP:		北向网管NCEIP地址
端口:	31943	
	  	31945
	  	26335
地址:	
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 {
	/*
	@Bean
	public 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
	 */
	@Bean
    public 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.coloradmin.cn/o/1500553.html

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

相关文章

学习与学习理论 - 2024教招 - test

一 方向 方向性很重要&#xff0c;像学投篮一样关注发力顺序才是关键出发点&#xff0c;如果这个出发点没确定下来&#xff0c;会走许多弯路。所有学习理论大的观点&#xff0c;到某个人物个人的观点。被干掉之前&#xff08;不能被干掉&#xff09;&#xff0c;掌握所需的知识…

C++:Stack和Queue的模拟实现

创作不易&#xff0c;感谢三连&#xff01; 一、容器适配器 适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结)&#xff0c;该种模式是将一个类的接口转换成客户希望的另外一个接口。 就如同是电源适配器将不适用的交流电…

STM32CubeMX学习笔记13 ---IIC总线

1、IIC 简介 IIC(Inter&#xff0d;Integrated Circuit)总线是一种由NXP&#xff08;原PHILIPS&#xff09;公司开发的两线式串行总线&#xff0c;用于连接微控制器及其外围设备。多用于主控制器和从器件间的主从通信&#xff0c;在小数据量场合使用&#xff0c;传输距离短&…

《汇编语言》- 读书笔记 - 第17章-实验17 编写包含多个功能子程序的中断例程

《汇编语言》- 读书笔记 - 第17章-实验17 编写包含多个功能子程序的中断例程 逻辑扇区根据逻辑扇区号算出物理编号中断例程&#xff1a;通过逻辑扇区号对软盘进行读写 代码安装 int 7ch 测试程序效果 实现通过逻辑扇区号对软盘进行读写 逻辑扇区 计算公式: 逻辑扇区号 (面号*8…

【PCIe 链路训练】之均衡(equalization)

1、概述 这篇文章简单介绍一下PCIE phy的均衡原理和过程,USB phy,ethernet phy这些高速的串行serdes也有相同或者相似的结构。可以不用太关注其中的细节,等到debug的时候可以查询协议,但是需要了解这个故事讲的大概内容。整个equalization过程是controller和phy一起配合完成…

喜报|炼石免改造数据安全入选上海网安产业创新大会优秀案例

近日&#xff0c;上海网络安全产业创新大会隆重召开&#xff0c;上海普陀区委副书记、区长肖文高&#xff0c;上海市经济和信息化委员会总工程师葛东波出席并致辞&#xff0c;普陀区副区长肖立出席。大会以“产业赋能、生态打造”为主题&#xff0c;为发掘数据安全领域的优秀产…

【代码随想录算法训练营Day29】 491.递增子序列;46.全排列;47.全排列 II

文章目录 ❇️Day 29 第七章 回溯算法 part05✴️今日内容❇️491.递增子序列自己的思路随想录思路自己的代码 ❇️46.全排列思路代码流程 ❇️47.全排列 II思路代码 ❇️Day 29 第七章 回溯算法 part05 ✴️今日内容 491.递增子序列46.全排列47.全排列 II ❇️491.递增子序…

低压MOS在步进电机驱动器上的应用-REASUNOS瑞森半导体

一、前言 步进电机驱动器是一种用于控制步进电机运动的装置&#xff0c;它是将控制信号转换成步进电机可以识别的控制电压或电流的电路。它在工业自动化领域有着广泛的应用&#xff0c;如机器人、印刷机、木工机床、喷绘机等。步进电机驱动器的组成结构主要由以下部分&#xf…

《C缺陷和陷阱》-笔记

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 文章目录 前言 一、理解函数声明 1.(*(void(*)( ))0)( ); 2.signal 函数接受两个参数&#xff1a; 3.使用typedef 简化函数声明&#xff1a; 二、运算符的优先级…

面试经典150题【61-70】

文章目录 面试经典150题【61-70】61.旋转链表86.分隔链表104. 二叉树的最大深度100.相同的树226.翻转二叉树101.对称二叉树105.从前序与中序遍历序列构造二叉树106.从后序和中序遍历序列构造二叉树117.填充每个节点的下一个右侧节点指针II114.二叉树展开为链表 面试经典150题【…

修复 因 fstab 中UUID 错误导致系统无法正常工作的问题

操作系统&#xff1a; PVE 8.0 /debian 12 &#xff08;bookworm&#xff09; 问题症状&#xff1a;可以正常启动进入系统&#xff0c;但是系统盘以只读方式挂载 问题原因&#xff1a;/etc/fstab 中引导区的UUID 被错误修改导致 解决方法&#xff1a; 重启系统&#xff0c;在…

QT:用opencv的KNN识别图片中的LED数字(一)

前言 一款功能测试的软件demo,使用了QT作为界面,主要使用了opencv的KNN识别,使用gstreamer作为管道,用来打开图片。后期会写一篇打开摄像头实时识别的文章。 (正在写,未完成,稍候) 效果一预览: 效果二预览: 效果三预览: 正在写。。。 设计思路 1. 软件UI设…

吴恩达深度学习笔记:深度学习引言1.1-1.5

目录 第一门课&#xff1a;神经网络和深度学习 (Neural Networks and Deep Learning)第一周&#xff1a;深度学习引言(Introduction to Deep Learning)1.1 欢迎(Welcome)1.2 什么是神经网络&#xff1f;(What is a Neural Network)1.3 神经网络的监督学习(Supervised Learning …

【C++】C++模板基础知识篇

个人主页 &#xff1a; zxctscl 文章封面来自&#xff1a;艺术家–贤海林 如有转载请先通知 文章目录 1. 泛型编程2. 函数模板2.1 函数模板概念2.2 函数模板格式2.3 函数模板的原理2.4 函数模板的实例化2.5 模板参数的匹配原则 3. 类模板3.1 类模板的定义格式3.2 类模板的实例化…

Trans论文复现:考虑源荷不平衡性的微电网鲁棒定价方法程序代码!

适用平台&#xff1a;MatlabYalmipCplex/Gurobi 程序针对目前微电网中高比例新能源发电的波动性和间歇性&#xff0c;提出了考虑源荷不平衡特性的微电网鲁棒定价方法&#xff0c;综合考虑电力市场边际收益和边际成本&#xff0c;利用价格波动来平衡电源和负荷。程序算例丰富、注…

腾讯云轻量 2核2G4M新用户首购活动,99续费同价来了!!

阿里云199一年续费同价&#xff0c;腾讯云99一年续费同价&#xff0c;平台卷起来&#xff0c;对用户的角度来说&#xff0c;真的是香麻了~ 腾讯云新春采购节&#xff0c;2核2G4兆的基础配置&#xff0c;新官方直接放大招&#xff0c;99一年&#xff0c;活动期间内&#xff0c;…

EXSI create datastore

文章目录 1. 简介2. 清空磁盘3. 删除表4. 创建database 1. 简介 在 ESXi 环境中创建数据存储(Datastore)的步骤如下: 登录 vSphere Web Client 打开 Web 浏览器,输入 ESXi 主机或 vCenter Server 的 IP 地址,使用有权限的账户登录。 在 ESXi 环境中创建数据存储(Datastore)…

二、TensorFlow结构分析(4)

TF数据流图图与TensorBoard会话张量Tensor变量OP高级API 目录 1、变量 2、高级API 1、变量 2、高级API

【Kafka系列 07】Kafka 如何保证消息不丢失

一、Kafka 消息不丢失的边界 一直以来&#xff0c;很多人对于 Kafka 丢失消息这件事情都有着自己的理解&#xff0c;因而也就有着自己的解决之道。在讨论具体的应对方法之前&#xff0c;我觉得我们首先要明确&#xff0c;在 Kafka 的世界里什么才算是消息丢失&#xff0c;或者…