OpenTCS打造移动机器人交通管制系统(九)

     上一篇文章探讨了如何拓展Kernel。本文来讲下如何为OpenTCS增加WebAPI。由于OpenTCS有MES系统或别的第三方系统对接时通常都是使用WebAPI进行交互的。OpenTCS系统的WebAPI遵循RestAPI的设计,提供了一系列API接口,这些API接口通过Document可以查看到。

如何测试这些API?

可以通过浏览器来测试(推荐使用Google浏览器),比如这里要获取全部的车辆信息,可以在浏览器中输入如下地址:

http://localhost:55200/v1/vehicles

 得到数据反馈如下(这里笔者的系统中由两台移动机器人,V-0001/V-0002):

[ {
  "name" : "V-0001",
  "properties" : {
    "IP" : "192.168.1.4",
    "Port" : "5001"
  },
  "length" : 1000,
  "energyLevelGood" : 90,
  "energyLevelCritical" : 30,
  "energyLevel" : 100,
  "integrationLevel" : "TO_BE_UTILIZED",
  "procState" : "IDLE",
  "transportOrder" : null,
  "currentPosition" : "Point-0009",
  "state" : "IDLE"
}, {
  "name" : "V-0002",
  "properties" : {
    "IP" : "192.168.1.3",
    "Port" : "5001"
  },
  "length" : 1000,
  "energyLevelGood" : 90,
  "energyLevelCritical" : 30,
  "energyLevel" : 100,
  "integrationLevel" : "TO_BE_UTILIZED",
  "procState" : "IDLE",
  "transportOrder" : null,
  "currentPosition" : "Point-0007",
  "state" : "IDLE"
}]

以上数据是通过JSON打包的。内容为所有移动机器人的信息。当然也可以通过GET参数进行帅选,具体可以参考TCS的Doc来查询。

如何拓展WebApi?

本文着重讲下如何增加一个WebAPI的访问,很多时候,我们需要获取的信息往往是多样的,有些信息OpenTCS可能并未提供,那此时就需要我们自己去拓展了。下面以获取所有Point为例说明如何得到一个可以后期系统所有Point的WebApi。

WebAPI的代码存放在OpenTCS-Kernel-Extension-HTTP-Services这个包中,因此我们需要拓展这个包。

1、首先增加路由。

我们打算通过如下Url访问得到Point的信息:

http://localhost:55200/v1/points

此时访问肯定是得到一个大大的404错误。因此我们需要为后台添加一个Route(Route的概念在Web开发中是很重要的一个概念)。

  //以下代码来自白色冰激凌的博客:https://blog.csdn.net/xlh145
  //以下函数请在V1RequestHandler.java中查找
  @Override
  public void addRoutes(Service service) {
    ...
    service.get("/points", this::handleGetPoints);
    ...
  }

2、处理Http回调。

客户端访问时通过Get方式进行,那么服务端需要回调函数来处理HTTP报文,要实现handleGetPoints函数。

  //以下代码来自白色冰激凌的博客:https://blog.csdn.net/xlh145
  
  private Object handleGetPoints(Request request, Response response) throws     
     IllegalArgumentException {
    //增加HTTP响应报文头
    response.type(HttpConstants.CONTENT_TYPE_APPLICATION_JSON_UTF8);
    //从系统中得到数据并打包成JSON返回
    return toJson(statusInformationProvider.getPoints());
  }

最终的效果如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章