首先我們創建一個邏輯類,它負責邏輯運算。
我們可以創建自己的方法和signature,里面是運算邏輯。這個類還不能用於集成,我們還需要一個解析類。
創建解析類ZCL_DEMO_HANDLER。它需要繼承IF_HTTP_EXTENSION和IF_REST_APPLICATION兩個接口。我們要實現解析邏輯,則需要重寫HANDLE_REQUEST方法,該方法將用於解析HTTP傳來的指令。
HANDLE_REQUEST方法只有一個參數SERVER,但是該參數有很多字段。
首先我們在常量中,需要注冊服務的URI,這里是/SAP/BC/ZDEMO/ZTESTING,后面的SICF配置中可以看到它是如何來的。
lt_input和wa_input用於存放JSON轉換的數據,如果JSON外部有中括號,則會轉換成內表,如果沒有則會轉換成工作區。
lv_result則用於存放邏輯運算的返回值。
因為邏輯類有3個input和1個output,所以這里也是3個輸入字段和1個返回字段
接入參數如圖,這個應用比較簡單,則只需要解析URI和JSON即可。
常用的參數有:
- Lv_method: 即HTTP方法
- Lv_parameter: 即URI后面的顯式QUERY
- Lv_langu: 即語言
- Lv_path: 即URI
- Lv_host: 即服務器地址
- Lv_agent: 即用戶agent
- Lv_token: 即用戶token,可用於權限控制
- Lv_body: 即JSON字符串
運算部分,如果收到的URI對應本服務,則調用邏輯類的方法並計算。
這里以JSON返回計算結果。
創建好邏輯類和解析類,還需要在SICF中注冊服務。我們創建了一個叫ZDEMO的節點下的ZTESTING服務。
ZTESTING服務需要設置賬號密碼。
ZTESTING服務也還需要設置解析類,即ZCL_DEMO_HANDLER。
右鍵激活服務后,用戶就可以通過路徑和服務名稱調用服務了。它們合起來也就是前面代碼里的服務地址了。