天天看點

一個簡單的RESTful例子

首先感謝本文作者,群裡的朋友:金刀不無敵 

以下是作者整理的幹貨:

一個簡單的RESTful例子

首先我們建立一個邏輯類,它負責邏輯運算。

一個簡單的RESTful例子

我們可以建立自己的方法和signature,裡面是運算邏輯。這個類還不能用于內建,我們還需要一個解析類。

一個簡單的RESTful例子
一個簡單的RESTful例子

建立解析類ZCL_DEMO_HANDLER。它需要繼承IF_HTTP_EXTENSION和IF_REST_APPLICATION兩個接口。我們要實作解析邏輯,則需要重寫HANDLE_REQUEST方法,該方法将用于解析HTTP傳來的指令。

一個簡單的RESTful例子

HANDLE_REQUEST方法隻有一個參數SERVER,但是該參數有很多字段。

一個簡單的RESTful例子

首先我們在常量中,需要注冊服務的URI,這裡是/SAP/BC/ZDEMO/ZTESTING,後面的SICF配置中可以看到它是如何來的。

lt_input和wa_input用于存放JSON轉換的資料,如果JSON外部有中括号,則會轉換成内表,如果沒有則會轉換成工作區。

lv_result則用于存放邏輯運算的傳回值。

因為邏輯類有3個input和1個output,是以這裡也是3個輸入字段和1個傳回字段

一個簡單的RESTful例子

接入參數如圖,這個應用比較簡單,則隻需要解析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字元串
一個簡單的RESTful例子

運算部分,如果收到的URI對應本服務,則調用邏輯類的方法并計算。

一個簡單的RESTful例子

這裡以JSON傳回計算結果。

一個簡單的RESTful例子

建立好邏輯類和解析類,還需要在SICF中注冊服務。我們建立了一個叫ZDEMO的節點下的ZTESTING服務。

一個簡單的RESTful例子

ZTESTING服務需要設定賬号密碼。

一個簡單的RESTful例子

ZTESTING服務也還需要設定解析類,即ZCL_DEMO_HANDLER。

一個簡單的RESTful例子

右鍵激活服務後,使用者就可以通過路徑和服務名稱調用服務了。它們合起來也就是前面代碼裡的服務位址了。