ApolloStudio高手之路(22):WebAPI(HTTP Server)的搭建和调用

2024-04-14 06:58

本文主要是介绍ApolloStudio高手之路(22):WebAPI(HTTP Server)的搭建和调用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        在现如今的智慧工厂项目中,对不同设备之间的通讯需求越来越多,目前较为普及的主要是WebService以及WebAPI,而且后者因其设计和部署的便利性将有逐步完全替代前者的趋势,ApolloStudio同时支持这两种通讯方式,本文将着重以WebAPI的通讯方式进行介绍。

WebAPI的搭建

        在ApolloStudio中的,WebAPI主要是以脚本函数的方式进行创建:

开启服务:设置一个本地空闲的TCP端口号,带入到函数中传参当中作启动参数。

关闭服务:当程序执行完毕时,需手动调用该函数,即可关闭端口释放资源。

绑定节点:可以设置不同的节点所对应的处理函数。

我们根据上面的介绍编写测试脚本如下:

#-*- coding: UTF-8 -*-
#加载内嵌模块
import clr,sys,time,datetime,threading#后台线程监控系统状态
def subloopthread():while AS.Func_Sys_GetSysStatus():#获取系统状态,便于安全退出time.sleep(0.5)#系统执行完毕后,执行关闭操作AS.Func_HttpServer_Close()#节点func1绑定的函数,需保留入参inputdata
def func1(inputdata):return '{"RES1":"%s"}'%inputdata#节点func2绑定的函数,需保留入参inputdata
def func2(inputdata):return '{"RES2":"%s"}'%inputdata#启动WebAPI服务器
AS.Func_HttpServer_Start(17890)
#绑定一个节点,这里举例按func1测试
AS.Func_HttpServer_BindNode("/func1", func1)
#可以绑定多个节点,这里举例按func2测试
AS.Func_HttpServer_BindNode("/func2", func2)
#启动后台监控线程
t = threading.Thread(target=subloopthread, name='SubLoopThread')
t.start()#模拟主线程循环
while True:time.sleep(0.5)

        在上面的测试脚本中,我们设置了2个节点func1和func2,这里节点的定义数量是没有限制的,可以根据实际的业务需要绑定更多的节点以完成操作。同时我们还定义了一个后台线程来监控系统是否已退出,当后台线程检测到主流程已退出时,这时就会自动销毁已开启的HTTP服务器资源 。

        WebAPI服务端默认绑定的本地地址0.0.0.0,我们这里是采用的本地测试,故使用127.0.0.1这个IP地址进行访问,对应的在Url中,地址则为http://127.0.0.1:17890,这个为基地址,后面则接上对应的节点即可访问,例如在脚本中所定义的/func1这个节点,完整的访问链接则为http://127.0.0.1:17890/func1,在下面的测试中可以注意下这一点。

        在ApolloStudio中加载完测试脚本后,即可进行调用测试,这里我们通过脚本任务项来加载测试,并未做其他的附属功能。

WebAPI服务器的测试

        这里我们可以选择PostMan、ApiPost等常用的测试工具进行标准化测试,这里我们以ApiPost测试工具为例:

        新增一个测试接口,这里填写本地URL地址:

        调用func1节点则对应的Url为:http://127.0.0.1:17890/func1

        调用func2节点则对应的Url为:http://127.0.0.1:17890/func2

        即可在下面的结果栏里看到返回的信息。这里我们是以json的格式进行双向传输,请求格式里选择为application/json,请求端带入的参数(这里我们随意定义的数值123)将会被脚本函数中的inputdata进行接收,在函数中j经过处理后,再通过return返回函数的调用结果,函数的返回结果将作为请求的响应进行反馈到请求端的获取结果处。

        到此便是简单的搭建和调用了WebAPI服务功能来进行演示,本文仅为功能的简单说明,以作抛砖引玉之效,大家可以根据自己的实际需要进行改进和应用。

    ***********************************************************************************************************************************************

ApolloStudio最新版下载地址(网盘有交流群号):

(点击跳转至首页文章,见文章最底部下载链接)

这篇关于ApolloStudio高手之路(22):WebAPI(HTTP Server)的搭建和调用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/902375

相关文章

Java调用Python的四种方法小结

《Java调用Python的四种方法小结》在现代开发中,结合不同编程语言的优势往往能达到事半功倍的效果,本文将详细介绍四种在Java中调用Python的方法,并推荐一种最常用且实用的方法,希望对大家有... 目录一、在Java类中直接执行python语句二、在Java中直接调用Python脚本三、使用Run

Python如何调用指定路径的模块

《Python如何调用指定路径的模块》要在Python中调用指定路径的模块,可以使用sys.path.append,importlib.util.spec_from_file_location和exe... 目录一、sys.path.append() 方法1. 方法简介2. 使用示例3. 注意事项二、imp

C#如何调用C++库

《C#如何调用C++库》:本文主要介绍C#如何调用C++库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录方法一:使用P/Invoke1. 导出C++函数2. 定义P/Invoke签名3. 调用C++函数方法二:使用C++/CLI作为桥接1. 创建C++/CL

Spring Boot 整合 SSE的高级实践(Server-Sent Events)

《SpringBoot整合SSE的高级实践(Server-SentEvents)》SSE(Server-SentEvents)是一种基于HTTP协议的单向通信机制,允许服务器向浏览器持续发送实... 目录1、简述2、Spring Boot 中的SSE实现2.1 添加依赖2.2 实现后端接口2.3 配置超时时

SQL server配置管理器找不到如何打开它

《SQLserver配置管理器找不到如何打开它》最近遇到了SQLserver配置管理器打不开的问题,尝试在开始菜单栏搜SQLServerManager无果,于是将自己找到的方法总结分享给大家,对SQ... 目录方法一:桌面图标进入方法二:运行窗口进入方法三:查找文件路径方法四:检查 SQL Server 安

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

python连接本地SQL server详细图文教程

《python连接本地SQLserver详细图文教程》在数据分析领域,经常需要从数据库中获取数据进行分析和处理,下面:本文主要介绍python连接本地SQLserver的相关资料,文中通过代码... 目录一.设置本地账号1.新建用户2.开启双重验证3,开启TCP/IP本地服务二js.python连接实例1.

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++