创建对象ZCL_REST_TEST_APPLICATION继承超类CL_REST_HTTP_HANDLER,并重构方法IF_REST_APPLICATION~GET_ROOT_HANDLER
创建对象ZCL_REST_SAMPLE_CARS继承CL_REST_RESOURCE,可按实际照需求重写GET,PUT,POST等http的操作方法,该样例重写了GET和POST,重写GET是会了获取CSRF token
Post 代码如下: METHOD IF_REST_RESOURCE~POST.CALL METHOD SUPER->IF_REST_RESOURCE~POST EXPORTING* IO_ENTITY =* .
DATA(LV_XSTR) = IO_ENTITY->GET_STRING_DATA( ).
TYPES: BEGIN OF TYP_ITEM, F1 TYPE STRING, F2 TYPE STRING, END OF TYP_ITEM. TYPES TYP_T_ITEMS TYPE TABLE OF TYP_ITEM WITH DEFAULT KEY.
DATA: BEGIN OF LV_REQ, MODEL_NAME TYPE STRING, MANU_ID TYPE STRING, PRICE TYPE STRING, CURRENCY TYPE STRING, MODEL_YEAR TYPE STRING, IMAGE_TYPE TYPE STRING, IMAGE_PATH TYPE STRING, UPDATE_USER TYPE STRING, ITEMS TYPE TYP_T_ITEMS, END OF LV_REQ.
/UI2/CL_JSON=>DESERIALIZE( EXPORTING JSON = IO_ENTITY->GET_STRING_DATA( ) CHANGING DATA = LV_REQ ).
DATA: LO_ENTITY TYPE REF TO IF_REST_ENTITY. LO_ENTITY = MO_RESPONSE->CREATE_ENTITY( ). LO_ENTITY->SET_CONTENT_TYPE( IV_MEDIA_TYPE = IF_REST_MEDIA_TYPE=>GC_APPL_JSON ).
DATA: LT_RESULT TYPE TYP_T_ITEMS. LT_RESULT = VALUE #( ( F1 = ‘1’ F2 = ‘2’ ) ( F1 = ‘111’ F2 = ‘2222’ ) ).
DATA lv_json TYPE string.
lv_json = /ui2/cl_json=>serialize( data = LT_RESULT ).
LO_ENTITY->SET_STRING_DATA( lv_json ).
MO_RESPONSE->SET_STATUS( CL_REST_STATUS_CODE=>GC_SUCCESS_OK ).
ENDMETHOD.
效果如下图,主要是测试SAP接受json的报文和返回json的报文
备注:需在SICF中创建该RESTFUL的服务,如下图
备注2重写处理器中类的HANDLE_CSRF_TOKEN的方法,能取消CSRF的token检查