class ZCL_RESTFUL_COMMON definition public final create public . public section. interfaces IF_HTTP_EXTENSION . protected section. private section. ENDCLASS. CLASS ZCL_RESTFUL_COMMON IMPLEMENTATION. * <SIGNATURE>---------------------------------------------------------------------------------------+ * | Instance Public Method ZCL_RESTFUL_COMMON->IF_HTTP_EXTENSION~HANDLE_REQUEST * +-------------------------------------------------------------------------------------------------+ * | [--->] SERVER TYPE REF TO IF_HTTP_SERVER * +--------------------------------------------------------------------------------------</SIGNATURE> METHOD if_http_extension~handle_request. DATA: req_input_json TYPE string. DATA: response_json TYPE string. DATA: lv_method TYPE string. DATA: lo_server_request TYPE REF TO if_http_request, lo_server_response TYPE REF TO if_http_response. DATA: lt_header_fields TYPE tihttpnvp, ls_header_fields TYPE ihttpnvp. DATA: ls_syncfg TYPE ztif_syncfg. DATA: lv_if_id TYPE ze_if_id. DATA: BEGIN OF ls_error_return, ev_type TYPE char1, ev_message TYPE char220, END OF ls_error_return. lo_server_request = server->request. "获取请求(自) lo_server_response = server->response. "获取响应(自) lv_method = lo_server_request->get_method( ). "获取请求方式 IF lv_method EQ 'POST'. "获取Header部分 CALL METHOD lo_server_request->get_header_fields CHANGING fields = lt_header_fields. IF lt_header_fields[] IS NOT INITIAL . READ TABLE lt_header_fields WITH KEY name = 'if_id' INTO ls_header_fields . ENDIF. "获取body部分 req_input_json = lo_server_request->get_cdata( ). lv_if_id = ls_header_fields-value. SELECT SINGLE * INTO ls_syncfg FROM ztif_syncfg WHERE if_id = lv_if_id AND active = 'X'. IF sy-subrc EQ 0 AND ls_syncfg-funcname IS NOT INITIAL. CALL FUNCTION ls_syncfg-funcname EXPORTING iv_json = req_input_json IMPORTING ev_json = response_json. ELSE. CLEAR: ls_error_return. ls_error_return-ev_type = 'E'. ls_error_return-ev_message = |SAP接口映射未配置|. "序列化JSON解析 /ui2/cl_json=>serialize( EXPORTING data = ls_error_return RECEIVING r_json = response_json ). ENDIF. lo_server_response->set_status( code = 200 reason = 'OK' ). "设置响应 lo_server_response->set_content_type( 'application/json;charset=utf-8' )."响应类型 lo_server_response->set_cdata( data = response_json )."响应报文 ENDIF. ENDMETHOD. ENDCLASS.