前言

在NCCloud之前的版本中,并没有规范接口开发方式,开发接口的形式也是多种多样。OpenAPI的出现使得接口的开发变得规范、安全。但是在OpenAPI中预置的接口,无法满足客户的需要的时候,我们就要对OpenAPI进行扩展开发,将我们开发的接口加入到OpenAPI中,此篇博客将详细讲解如何对OpenAPI进行扩展开发。

一、编写接口入口类

在public端新建接口入口类,示例如下:

package nccloud.api.xuerong.pu;import java.util.Map;import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;import org.apache.commons.lang3.exception.ExceptionUtils;
import org.json.JSONString;import nc.bs.framework.common.InvocationInfoProxy;
import nc.bs.framework.common.NCLocator;
import nc.vo.pub.lang.UFBoolean;
import nccloud.api.rest.utils.ResultMessageUtil;
import nccloud.itf.xuerong.IOAMaintain;
import nccloud.pub.xuerong.LogUtil;
import nccloud.vo.xuerong.constant.XRConstant;
import nccloud.ws.rest.resource.AbstractNCCRestResource;/**   * 采购管理模块 OpenAPI 扩展接口* * @author 王晓旭* @date 2021年9月14日  */
@Path("/pu")
public class PuManageResources extends AbstractNCCRestResource {/*** 请购单审批*/@POST@Path("/praybill/approve")@Consumes({"application/json"})@Produces({"application/json"})public JSONString praybillApprove(JSONString json) {// 创建日志参数集合Map<XRConstant.LogParam, Object> logParmMap = LogUtil.createEmptyLogParmMap();// 接口执行结果UFBoolean flag = UFBoolean.TRUE;// 入参logParmMap.put(XRConstant.LogParam.INPUTMSG, json.toJSONString());// 返回值JSONString returnmsg = null;try {// 调用接口returnmsg = NCLocator.getInstance().lookup(IOAMaintain.class).praybillApprove(json.toJSONString());} catch (Exception e) {// 组装异常返回值returnmsg = ResultMessageUtil.exceptionToJSON(e);// 接口执行结果记录为失败flag = UFBoolean.FALSE;// 记录异常日志logParmMap.put(XRConstant.LogParam.ERRORMSG, ExceptionUtils.getStackTrace(e));} finally {// 日志参数赋值logParmMap.put(XRConstant.LogParam.PK_GROUP, InvocationInfoProxy.getInstance().getGroupId());logParmMap.put(XRConstant.LogParam.ITFTYPE, XRConstant.ItfType.PRAYBILLAPPROVE);logParmMap.put(XRConstant.LogParam.ISSUCCESS, flag);logParmMap.put(XRConstant.LogParam.CALLER, XRConstant.ItfSystem.OA);logParmMap.put(XRConstant.LogParam.RECEIVER, XRConstant.ItfSystem.NC);logParmMap.put(XRConstant.LogParam.RETURNMSG, returnmsg.toJSONString());// 记录日志LogUtil.save(logParmMap);}return returnmsg;}@Overridepublic String getModule() {// 模块名return "xuerong";}}

备注:

1.1、接口类名及接口方法名可以自定义,接口方法中代码可以自行编写;

1.2、类及方法上的注解必须存在,不可更改;

1.3、@Path标签中字符串为接口URL地址,类注解@Path不可去除,否则无法扫描到该接口;

1.4、接口URL组成规则:http://ip:port/nccloud/api/ + 类注解@Path值 + 方法注解@Path值,示例代码中接口URL地址为:http://ip:port/nccloud/api/pu/praybill/approve。

二、编写接口配置文件

在META-INF文件夹下编写 .rest 文件格式的配置文件,示例如下:

<?xml version="1.0" encoding='gb2312'?>
<module><!-- 采购管理模块 OpenAPI 扩展接口 --><rest><resource classname="nccloud.api.xuerong.pu.PuManageResources" exinfo="" /></rest>
</module>

三、注册接口信息

3.1、浏览器中打开NCCloud开发管理平台,URL地址为http://ip:port/nccloud/resources/opm/index.html

3.2、管理员登录

3.3、在API维护页签中注册接口信息

备注:在第一次注册保存后,会发现填写的URL字段值变为了空白,这个时候我们到数据库中找到刚才注册的记录,手动在数据库中将URL字段的值刷一下,表名为OPM_APIMANAGER

四、第三方应用管理

4.1、在第三方应用管理页签中注册接口的调用方信息,注册后会随机生成公钥和秘钥;

4.2、点击【关联API】按钮分配接口权限。

五、NCCloud OpenAPI使用文档

百度网盘链接:https://pan.baidu.com/s/1JhTgwhwliiwXKiFCgSHQrg?pwd=p4zu

文档中有OpenAPI具体的调用方式及示例项目,可直接导入开发工具中进行接口测试,也可直接发给第三方系统作为接口调用参考。

NCCloud OpenAPI扩展开发相关推荐

  1. NCCloud OpenAPI 客户端调试工具

    NCCloud OpenAPI 客户端调试工具,方便实施.开发日常接口测试,支持多个OpenAPI服务参数配置,支持json报文格式化显示等. 效果图如下: 下载地址:NCCloud OpenAPI

  2. FFmpeg扩展开发

    FFmpeg扩展开发 对FFmpeg RTMP/FLV部分做了扩展,用于支持H.265. 针对<video_file_format_spec_v10_1> VIDEODATA部分扩展如下: ...

  3. SuperMap iDesktop Cross 8C 开源桌面GIS下载与扩展开发

    2019独角兽企业重金招聘Python工程师标准>>> SuperMap iDesktop Cross 8C 扩展开发的环境配置

 工程源码:http://git.oschina. ...

  4. mysql for循环_基于Swoole扩展开发异步高性能的MySQL代理服务器

    MySQL数据库对每个客户端连接都会分配一个线程,所以连接非常宝贵.开发一个异步的MySQL代理服务器,PHP应用服务器可以长连接到这台Server,既减轻MYSQL的连接压力,又使PHP保持长连接减 ...

  5. 基于Mozilla Thunderbird的扩展开发(四)---修改Thunderbird源代码实现自动保存附件...

    <?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace ...

  6. php7 ext skel_基于PHP7的PHP扩展开发之一(hello word)

    为什么要学PHP扩展开发?学会PHP扩展开发后,能增加你解决问题的能力.如,别人用PHP实现了一个功能.执行一次需要耗时10毫秒.而你用扩展实现了同样的功能,可能就只用1毫秒. PHP扩展的应用场景 ...

  7. php7 定义变量,基于PHP7的PHP扩展开发之七(定义变量)

    目的:熟悉在PHP扩展里面如何定义变量 要实现的PHP代码如下: class lostphp{} $lng = 2; $str = "abc"; $arr = array(1,'a ...

  8. PHP扩展开发系列01 - 我要成为一名老司机

    PHP扩展开发系列01 - 我要成为一名老司机 1. 关于扩展的教程貌似挺全了,为啥还写? 记录下我写扩展的历程 自认为会写的更容易理解 我的宗旨就是 "先用再识" 代码写着写着就 ...

  9. mysql异步扩展_基于Swoole扩展开发异步高性能的MySQL代理服务器

    MySQL数据库对每个客户端连接都会分配一个线程,所以连接非常宝贵.开发一个异步的MySQL代理服务器,PHP应用服务器可以长连接到这台Server,既减轻MYSQL的连接压力,又使PHP保持长连接减 ...

最新文章

  1. LInkedHashMap实现最近被使用(LRU)缓存
  2. 深入理解Binder机制4-bindService过程分析
  3. android 颜色值参考,(有颜色图
  4. linux sheet脚本去掉m,linux下的文本dos格式转unix格式,去除^M符号
  5. 成功修改fastreport3.15,使其支持中日韩四(CJK)中编码PDF的导出
  6. Laya 位图字体制作(失败...)
  7. boost::process::search_path相关的测试程序
  8. gitl更新最近代码_常见的蓝屏代码以及解决方法
  9. Hibernate type 与java 和 数据库类型对应
  10. java方法能不能继承方法_关于java:方法链接+继承不能很好地一起玩吗?
  11. Linux命令Man解释:PPPD(8):点对点daemon协议
  12. 怎么寻找java实例,Java 实例 – 在指定目录中查找文件
  13. 基于鲸鱼优化深度混合核极限学习机的故障诊断方法
  14. 上海图书馆及分馆特色
  15. CentOS7下docker服务无法启动的一般检查
  16. 八位知名设计师评iOS7:新鲜但复杂
  17. python自学第13天之基础数据类型知识点补充
  18. 家用人体体重秤方案规格书
  19. 02 汇编语言的函数
  20. 【pytorch torchvision源码解读系列—1】Alexnet

热门文章

  1. 002-CANoe 10.0 SP3 软件和CAN卡的配置笔记
  2. hpy计算机维护系统,HPY计算机维护系统2013(W8PE+03PE+DOS,ISO量产版)
  3. AutoCAD Civil 3D-创建道路模型(2 道路的挖填方量计算及条件部件)
  4. GIS领域的一些机器学习和人工智能的案例
  5. python 做excel可视化报告_Python操作Excel制作可视化数据图,实现自动化办公
  6. /dev/random与/dev/urandom
  7. 项目经理PMO分别是什么?
  8. nt6 硬盘安装系统
  9. 安装Adobe Premiere Pro CC 2018
  10. 学习笔记 | 深度卷积神经网络在计算机视觉中的应用