SAP 發布簡易REST 一:login驗證


說明:這里沒有使用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接口只能用用戶名和密碼驗證了。。。突然。。。索然無味


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM