說明:這里沒有使用ODATA,只是用最基礎的HTTP和JSON來處理。
這篇為第一篇,所以這里來說說驗證的一些東西。
創建SE24實施類,做http接口:ZCRM_REST
激活后,添加接口類:IF_HTTP_EXTENSION
添加實現代碼:
METHOD if_http_extension~handle_request. TYPES:BEGIN OF ty_login, username TYPE string, password TYPE string, END OF ty_login, BEGIN OF ty_retu, success TYPE string, access_token TYPE string, message TYPE string, END OF ty_retu. DATA: lo_json_ser TYPE REF TO zcl_trex_json_serializer, lo_json_des TYPE REF TO zcl_trex_json_deserializer. DATA: lt_fields TYPE tihttpnvp, lv_data TYPE string, lv_retu TYPE string, gw_login TYPE ty_login, gw_retu TYPE ty_retu, lv_guid TYPE crmt_object_guid. FIELD-SYMBOLS: <fs_field> LIKE LINE OF lt_fields. *""GET HTTP MESSAGE BODY lv_data = server->request->if_http_entity~get_cdata( ). zprocessjson=>deserialize( EXPORTING json = lv_data CHANGING data = gw_login ). "CHECK AUTH ADN SET RETURN MESSGAE IF gw_login-username = 'andy' AND gw_login-password = '123456'. gw_retu-success = 'true'. CALL FUNCTION 'CRM_GUID_CREATE' IMPORTING ev_guid = lv_guid. gw_retu-access_token = lv_guid. ELSE. gw_retu-success = 'E'. gw_retu-message = 'ERROR'. ENDIF. lv_retu = /ui2/cl_json=>serialize( data = gw_retu pretty_name = 'L' compress = abap_true ). "SET RETURN DATA server->response->set_cdata( EXPORTING data = lv_retu " Character data ). ENDMETHOD.
sicf在sap目錄下創建服務API



保存,激活,測試服務。

哎,盡管能取到token,但是再后續調用的過程中,header傳遞的token取不到。。。操。。。這就不好玩了呀。那這樣REST接口只能用用戶名和密碼驗證了。。。突然。。。索然無味
