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());
  }

最終的效果如下:

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